nameExpr is g
decl is g: function
  with parameters
    p: pointer to forall
          U: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type U (not function type) 
                    instance of type U (not function type) 
                  returning 
                    instance of type U (not function type) 


        function
        with parameters
          instance of type U (not function type) 
        returning 
          nothing 

  returning 
    nothing 

newExpr is Variable Expression: g: function
    with parameters
      p: pointer to forall
            U: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type U (not function type) 
                      instance of type U (not function type) 
                    returning 
                      instance of type U (not function type) 


          function
          with parameters
            instance of type U (not function type) 
          returning 
            nothing 

    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: g: function
    with parameters
      p: pointer to forall
            U: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type U (not function type) 
                      instance of type U (not function type) 
                    returning 
                      instance of type U (not function type) 


          function
          with parameters
            instance of type U (not function type) 
          returning 
            nothing 

    returning 
      nothing 

(types:
    pointer to function
        with parameters
          p: pointer to forall
                _0_U: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type _0_U (not function type) 
                          instance of type _0_U (not function type) 
                        returning 
                          instance of type _0_U (not function type) 


              function
              with parameters
                instance of type _0_U (not function type) 
              returning 
                nothing 

        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is f
decl is f: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    instance of type T (not function type) 
  returning 
    nothing 

newExpr is Variable Expression: f: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: f: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      nothing 

(types:
    pointer to forall
          _1_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _1_T (not function type) 
                    instance of type _1_T (not function type) 
                  returning 
                    instance of type _1_T (not function type) 


        function
        with parameters
          instance of type _1_T (not function type) 
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: f: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      nothing 

(types:
    pointer to forall
          _1_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _1_T (not function type) 
                    instance of type _1_T (not function type) 
                  returning 
                    instance of type _1_T (not function type) 


        function
        with parameters
          instance of type _1_T (not function type) 
        returning 
          nothing 

)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: g: function
            with parameters
              p: pointer to forall
                    U: type
                      with assertions
                        ?=?: pointer to function
                            with parameters
                              pointer to instance of type U (not function type) 
                              instance of type U (not function type) 
                            returning 
                              instance of type U (not function type) 


                  function
                  with parameters
                    instance of type U (not function type) 
                  returning 
                    nothing 

            returning 
              nothing 

(types:
            pointer to function
                with parameters
                  p: pointer to forall
                        _0_U: type
                          with assertions
                            ?=?: pointer to function
                                with parameters
                                  pointer to instance of type _0_U (not function type) 
                                  instance of type _0_U (not function type) 
                                returning 
                                  instance of type _0_U (not function type) 


                      function
                      with parameters
                        instance of type _0_U (not function type) 
                      returning 
                        nothing 

                returning 
                  nothing 

)
        Environment: 
formal type is pointer to forall
    _0_U: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type _0_U (not function type) 
              instance of type _0_U (not function type) 
            returning 
              instance of type _0_U (not function type) 


  function
  with parameters
    instance of type _0_U (not function type) 
  returning 
    nothing 

actual type is pointer to forall
    _1_T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type _1_T (not function type) 
              instance of type _1_T (not function type) 
            returning 
              instance of type _1_T (not function type) 


  function
  with parameters
    instance of type _1_T (not function type) 
  returning 
    nothing 

need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to forall
    _2_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _2_DT (not function type) 
    pointer to instance of type _2_DT (not function type) 
  returning 
    pointer to instance of type _2_DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

inferRecursive: candidate is ?=?: pointer to function
  with parameters
    pointer to instance of type _0_U (not function type) 
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    pointer to instance of type _0_U (not function type) 
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 

success!
satisfying assertion 12 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with declaration 18 ?=?: pointer to function
  with parameters
    pointer to instance of type _0_U (not function type) 
    instance of type _0_U (not function type) 
  returning 
    instance of type _0_U (not function type) 

actual expression:
        Variable Expression: f: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              nothing 

--- results are
        pointer to forall
              _1_T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type _1_T (not function type) 
                        instance of type _1_T (not function type) 
                      returning 
                        instance of type _1_T (not function type) 


            function
            with parameters
              instance of type _1_T (not function type) 
            returning 
              nothing 


converting pointer to forall
            _1_T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type _1_T (not function type) 
                      instance of type _1_T (not function type) 
                    returning 
                      instance of type _1_T (not function type) 


          function
          with parameters
            instance of type _1_T (not function type) 
          returning 
            nothing 

 to pointer to forall
            _0_U: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type _0_U (not function type) 
                      instance of type _0_U (not function type) 
                    returning 
                      instance of type _0_U (not function type) 


          function
          with parameters
            instance of type _0_U (not function type) 
          returning 
            nothing 

cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to instance of type _0_U (not function type) 
            instance of type _0_U (not function type) 
          returning 
            instance of type _0_U (not function type) 

 to pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        p: pointer to forall
              _0_U: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type _0_U (not function type) 
                        instance of type _0_U (not function type) 
                      returning 
                        instance of type _0_U (not function type) 


            function
            with parameters
              instance of type _0_U (not function type) 
            returning 
              nothing 

actuals are:
                  Variable Expression: f: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                nothing 


bindings are:
        ( _1_T ) -> instance of type _0_U (not function type)  (no widening)
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: g: function
      with parameters
        p: pointer to forall
              U: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type U (not function type) 
                        instance of type U (not function type) 
                      returning 
                        instance of type U (not function type) 


            function
            with parameters
              instance of type U (not function type) 
            returning 
              nothing 

      returning 
        nothing 

to arguments
      Variable Expression: f: forall
          T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type T (not function type) 
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 


        function
        with parameters
          instance of type T (not function type) 
        returning 
          nothing 


with inferred parameters:
  ?=?: pointer to function
    with parameters
      pointer to instance of type U (not function type) 
      instance of type U (not function type) 
    returning 
      instance of type U (not function type) 

(types:
)
Environment:   ( _1_T ) -> instance of type _0_U (not function type)  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Application of
    Variable Expression: g: function
        with parameters
          p: pointer to forall
                U: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type U (not function type) 
                          instance of type U (not function type) 
                        returning 
                          instance of type U (not function type) 


              function
              with parameters
                instance of type U (not function type) 
              returning 
                nothing 

        returning 
          nothing 

  to arguments
          Variable Expression: f: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            nothing 


  with inferred parameters:
    ?=?: pointer to function
      with parameters
        pointer to instance of type U (not function type) 
        instance of type U (not function type) 
      returning 
        instance of type U (not function type) 


to:
  nothing
(types:
)
Environment:   ( _1_T ) -> instance of type _0_U (not function type)  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is h
decl is h: function
  with parameters
    null: pointer to signed int 
  returning 
    nothing 

newExpr is Variable Expression: h: function
    with parameters
      null: pointer to signed int 
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: h: function
    with parameters
      null: pointer to signed int 
    returning 
      nothing 

(types:
    pointer to function
        with parameters
          null: pointer to signed int 
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is id
decl is id: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

newExpr is Variable Expression: id: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: id: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    pointer to forall
          _0_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _0_T (not function type) 
                    instance of type _0_T (not function type) 
                  returning 
                    instance of type _0_T (not function type) 


        function
        with parameters
          instance of type _0_T (not function type) 
        returning 
          instance of type _0_T (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is id
decl is id: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

newExpr is Variable Expression: id: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: id: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    pointer to forall
          _1_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _1_T (not function type) 
                    instance of type _1_T (not function type) 
                  returning 
                    instance of type _1_T (not function type) 


        function
        with parameters
          instance of type _1_T (not function type) 
        returning 
          instance of type _1_T (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is id
decl is id: forall
    T: type
      with assertions
        ?=?: pointer to function
            with parameters
              pointer to instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 


  function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

newExpr is Variable Expression: id: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: id: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    pointer to forall
          _2_T: type
            with assertions
              ?=?: pointer to function
                  with parameters
                    pointer to instance of type _2_T (not function type) 
                    instance of type _2_T (not function type) 
                  returning 
                    instance of type _2_T (not function type) 


        function
        with parameters
          instance of type _2_T (not function type) 
        returning 
          instance of type _2_T (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is 0
decl is 0: forall
    T: incomplete type
  pointer to instance of type T (not function type) 
newExpr is Variable Expression: 0: forall
      T: incomplete type
    pointer to instance of type T (not function type) 

decl is 0: signed int 
newExpr is Variable Expression: 0: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: 0: forall
      T: incomplete type
    pointer to instance of type T (not function type) 
(types:
    forall
          _3_T: incomplete type
        lvalue pointer to instance of type _3_T (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
(types:
    lvalue signed int 
)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: 0: signed int 
(types:
    lvalue signed int 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: forall
      T: incomplete type
    pointer to instance of type T (not function type) 
(types:
    forall
          _3_T: incomplete type
        lvalue pointer to instance of type _3_T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: id: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to forall
                  _2_T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type _2_T (not function type) 
                            instance of type _2_T (not function type) 
                          returning 
                            instance of type _2_T (not function type) 


                function
                with parameters
                  instance of type _2_T (not function type) 
                returning 
                  instance of type _2_T (not function type) 

)
        Environment: 
formal type is instance of type _2_T (not function type) 
actual type is lvalue signed int 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _2_T (not function type) 
            instance of type _2_T (not function type) 
          returning 
            instance of type _2_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 
 with pointer to forall
    _4_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _4_DT (not function type) 
    pointer to instance of type _4_DT (not function type) 
  returning 
    pointer to instance of type _4_DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

success!
satisfying assertion 28 ?=?: pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 
 with declaration 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

formal type is instance of type _2_T (not function type) 
actual type is forall
    _3_T: incomplete type
  lvalue pointer to instance of type _3_T (not function type) 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _2_T (not function type) 
            instance of type _2_T (not function type) 
          returning 
            instance of type _2_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 
 with pointer to forall
    _5_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _5_DT (not function type) 
    pointer to instance of type _5_DT (not function type) 
  returning 
    pointer to instance of type _5_DT (not function type) 

success!
satisfying assertion 28 ?=?: pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 
 with declaration 8 ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _2_T (not function type) 
    instance of type _2_T (not function type) 
  returning 
    instance of type _2_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

actual expression:
        Variable Expression: 0: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _2_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to signed int 
            signed int 
          returning 
            signed int 

 to pointer to function
          with parameters
            pointer to instance of type _2_T (not function type) 
            instance of type _2_T (not function type) 
          returning 
            instance of type _2_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _2_T (not function type) 
actuals are:
                  Variable Expression: 0: signed int 

bindings are:
        ( _2_T ) -> signed int 
cost of conversion is:( 0, 4, 0 )
actual expression:
        Variable Expression: 0: forall
              T: incomplete type
            pointer to instance of type T (not function type) 
--- results are
        forall
              _3_T: incomplete type
            lvalue pointer to instance of type _3_T (not function type) 

converting forall
            _3_T: incomplete type
          lvalue pointer to instance of type _3_T (not function type) 
 to instance of type _2_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to forall
            _5_DT: incomplete type
          function
          with parameters
            pointer to pointer to instance of type _5_DT (not function type) 
            pointer to instance of type _5_DT (not function type) 
          returning 
            pointer to instance of type _5_DT (not function type) 

 to pointer to function
          with parameters
            pointer to instance of type _2_T (not function type) 
            instance of type _2_T (not function type) 
          returning 
            instance of type _2_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _2_T (not function type) 
actuals are:
                  Variable Expression: 0: forall
                T: incomplete type
              pointer to instance of type T (not function type) 

bindings are:
        ( _2_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type) 
        ( _3_T _5_DT ) (no widening)
cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Variable Expression: 0: signed int 

with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

(types:
    instance of type _2_T (not function type) 
)
Environment:   ( _2_T ) -> signed int 


Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Variable Expression: 0: forall
          T: incomplete type
        pointer to instance of type T (not function type) 

with inferred parameters:
  ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    instance of type _2_T (not function type) 
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type) 
  ( _3_T _5_DT ) (no widening)


there are 2 alternatives before elimination
there are 2 alternatives after elimination
findSubExprs
Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Variable Expression: 0: signed int 

with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

(types:
    signed int 
)
Environment:   ( _2_T ) -> signed int 


Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Variable Expression: 0: forall
          T: incomplete type
        pointer to instance of type T (not function type) 

with inferred parameters:
  ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    forall
          _3_T: incomplete type
        pointer to instance of type _3_T (not function type) 
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type) 
  ( _3_T _5_DT ) (no widening)


working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: id: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to forall
                  _1_T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type _1_T (not function type) 
                            instance of type _1_T (not function type) 
                          returning 
                            instance of type _1_T (not function type) 


                function
                with parameters
                  instance of type _1_T (not function type) 
                returning 
                  instance of type _1_T (not function type) 

)
        Environment: 
formal type is instance of type _1_T (not function type) 
actual type is signed int 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to forall
    _6_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _6_DT (not function type) 
    pointer to instance of type _6_DT (not function type) 
  returning 
    pointer to instance of type _6_DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

success!
satisfying assertion 28 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with declaration 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

formal type is instance of type _1_T (not function type) 
actual type is forall
    _3_T: incomplete type
  pointer to instance of type _3_T (not function type) 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to forall
    _7_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _7_DT (not function type) 
    pointer to instance of type _7_DT (not function type) 
  returning 
    pointer to instance of type _7_DT (not function type) 

success!
satisfying assertion 28 ?=?: pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with declaration 8 ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _1_T (not function type) 
    instance of type _1_T (not function type) 
  returning 
    instance of type _1_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

actual expression:
        Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: 0: signed int 

        with inferred parameters:
          ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

--- results are
        signed int 

converting signed int 
 to instance of type _1_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to signed int 
            signed int 
          returning 
            signed int 

 to pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _1_T (not function type) 
actuals are:
                  Application of
            Variable Expression: id: forall
                  T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type T (not function type) 
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

          to arguments
                          Variable Expression: 0: signed int 

          with inferred parameters:
            ?=?: function
              with parameters
                pointer to signed int 
                signed int 
              returning 
                signed int 


bindings are:
        ( _2_T ) -> signed int  (no widening)
        ( _1_T ) -> signed int 
cost of conversion is:( 0, 4, 0 )
actual expression:
        Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: 0: forall
                  T: incomplete type
                pointer to instance of type T (not function type) 

        with inferred parameters:
          ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 

--- results are
        forall
              _3_T: incomplete type
            pointer to instance of type _3_T (not function type) 

converting forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type) 
 to instance of type _1_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to forall
            _7_DT: incomplete type
          function
          with parameters
            pointer to pointer to instance of type _7_DT (not function type) 
            pointer to instance of type _7_DT (not function type) 
          returning 
            pointer to instance of type _7_DT (not function type) 

 to pointer to function
          with parameters
            pointer to instance of type _1_T (not function type) 
            instance of type _1_T (not function type) 
          returning 
            instance of type _1_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _1_T (not function type) 
actuals are:
                  Application of
            Variable Expression: id: forall
                  T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type T (not function type) 
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

          to arguments
                          Variable Expression: 0: forall
                    T: incomplete type
                  pointer to instance of type T (not function type) 

          with inferred parameters:
            ?=?: forall
                DT: incomplete type
              function
              with parameters
                pointer to pointer to instance of type DT (not function type) 
                pointer to instance of type DT (not function type) 
              returning 
                pointer to instance of type DT (not function type) 


bindings are:
        ( _2_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type)  (no widening)
        ( _1_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type) 
        ( _3_T _5_DT _7_DT ) (no widening)
cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Variable Expression: 0: signed int 

    with inferred parameters:
      ?=?: function
        with parameters
          pointer to signed int 
          signed int 
        returning 
          signed int 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

(types:
    instance of type _1_T (not function type) 
)
Environment:   ( _2_T ) -> signed int  (no widening)
  ( _1_T ) -> signed int 


Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Variable Expression: 0: forall
              T: incomplete type
            pointer to instance of type T (not function type) 

    with inferred parameters:
      ?=?: forall
          DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type DT (not function type) 
          pointer to instance of type DT (not function type) 
        returning 
          pointer to instance of type DT (not function type) 


with inferred parameters:
  ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    instance of type _1_T (not function type) 
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _1_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type) 
  ( _3_T _5_DT _7_DT ) (no widening)


there are 2 alternatives before elimination
there are 2 alternatives after elimination
findSubExprs
Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Variable Expression: 0: signed int 

    with inferred parameters:
      ?=?: function
        with parameters
          pointer to signed int 
          signed int 
        returning 
          signed int 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

(types:
    signed int 
)
Environment:   ( _2_T ) -> signed int  (no widening)
  ( _1_T ) -> signed int 


Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Variable Expression: 0: forall
              T: incomplete type
            pointer to instance of type T (not function type) 

    with inferred parameters:
      ?=?: forall
          DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type DT (not function type) 
          pointer to instance of type DT (not function type) 
        returning 
          pointer to instance of type DT (not function type) 


with inferred parameters:
  ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    forall
          _3_T: incomplete type
        pointer to instance of type _3_T (not function type) 
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _1_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type) 
  ( _3_T _5_DT _7_DT ) (no widening)


working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: id: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to forall
                  _0_T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type _0_T (not function type) 
                            instance of type _0_T (not function type) 
                          returning 
                            instance of type _0_T (not function type) 


                function
                with parameters
                  instance of type _0_T (not function type) 
                returning 
                  instance of type _0_T (not function type) 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is signed int 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to forall
    _8_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _8_DT (not function type) 
    pointer to instance of type _8_DT (not function type) 
  returning 
    pointer to instance of type _8_DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

success!
satisfying assertion 28 ?=?: pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with declaration 4 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

formal type is instance of type _0_T (not function type) 
actual type is forall
    _3_T: incomplete type
  pointer to instance of type _3_T (not function type) 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
inferRecursive: assertion is ?=?: pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 

inferRecursive: candidate is ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

unifying pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to forall
    _9_DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type _9_DT (not function type) 
    pointer to instance of type _9_DT (not function type) 
  returning 
    pointer to instance of type _9_DT (not function type) 

success!
satisfying assertion 28 ?=?: pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with declaration 8 ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

unifying pointer to function
  with parameters
    pointer to instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

actual expression:
        Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Application of
              Variable Expression: id: forall
                    T: type
                      with assertions
                        ?=?: pointer to function
                            with parameters
                              pointer to instance of type T (not function type) 
                              instance of type T (not function type) 
                            returning 
                              instance of type T (not function type) 


                  function
                  with parameters
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 

            to arguments
                              Variable Expression: 0: signed int 

            with inferred parameters:
              ?=?: function
                with parameters
                  pointer to signed int 
                  signed int 
                returning 
                  signed int 


        with inferred parameters:
          ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

--- results are
        signed int 

converting signed int 
 to instance of type _0_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to signed int 
            signed int 
          returning 
            signed int 

 to pointer to function
          with parameters
            pointer to instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _0_T (not function type) 
actuals are:
                  Application of
            Variable Expression: id: forall
                  T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type T (not function type) 
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

          to arguments
                          Application of
                Variable Expression: id: forall
                      T: type
                        with assertions
                          ?=?: pointer to function
                              with parameters
                                pointer to instance of type T (not function type) 
                                instance of type T (not function type) 
                              returning 
                                instance of type T (not function type) 


                    function
                    with parameters
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 

              to arguments
                                  Variable Expression: 0: signed int 

              with inferred parameters:
                ?=?: function
                  with parameters
                    pointer to signed int 
                    signed int 
                  returning 
                    signed int 


          with inferred parameters:
            ?=?: function
              with parameters
                pointer to signed int 
                signed int 
              returning 
                signed int 


bindings are:
        ( _2_T ) -> signed int  (no widening)
        ( _1_T ) -> signed int  (no widening)
        ( _0_T ) -> signed int 
cost of conversion is:( 0, 4, 0 )
actual expression:
        Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Application of
              Variable Expression: id: forall
                    T: type
                      with assertions
                        ?=?: pointer to function
                            with parameters
                              pointer to instance of type T (not function type) 
                              instance of type T (not function type) 
                            returning 
                              instance of type T (not function type) 


                  function
                  with parameters
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 

            to arguments
                              Variable Expression: 0: forall
                      T: incomplete type
                    pointer to instance of type T (not function type) 

            with inferred parameters:
              ?=?: forall
                  DT: incomplete type
                function
                with parameters
                  pointer to pointer to instance of type DT (not function type) 
                  pointer to instance of type DT (not function type) 
                returning 
                  pointer to instance of type DT (not function type) 


        with inferred parameters:
          ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 

--- results are
        forall
              _3_T: incomplete type
            pointer to instance of type _3_T (not function type) 

converting forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type) 
 to instance of type _0_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to forall
            _9_DT: incomplete type
          function
          with parameters
            pointer to pointer to instance of type _9_DT (not function type) 
            pointer to instance of type _9_DT (not function type) 
          returning 
            pointer to instance of type _9_DT (not function type) 

 to pointer to function
          with parameters
            pointer to instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _0_T (not function type) 
actuals are:
                  Application of
            Variable Expression: id: forall
                  T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type T (not function type) 
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

          to arguments
                          Application of
                Variable Expression: id: forall
                      T: type
                        with assertions
                          ?=?: pointer to function
                              with parameters
                                pointer to instance of type T (not function type) 
                                instance of type T (not function type) 
                              returning 
                                instance of type T (not function type) 


                    function
                    with parameters
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 

              to arguments
                                  Variable Expression: 0: forall
                        T: incomplete type
                      pointer to instance of type T (not function type) 

              with inferred parameters:
                ?=?: forall
                    DT: incomplete type
                  function
                  with parameters
                    pointer to pointer to instance of type DT (not function type) 
                    pointer to instance of type DT (not function type) 
                  returning 
                    pointer to instance of type DT (not function type) 


          with inferred parameters:
            ?=?: forall
                DT: incomplete type
              function
              with parameters
                pointer to pointer to instance of type DT (not function type) 
                pointer to instance of type DT (not function type) 
              returning 
                pointer to instance of type DT (not function type) 


bindings are:
        ( _2_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type)  (no widening)
        ( _1_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type)  (no widening)
        ( _0_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type) 
        ( _3_T _5_DT _7_DT _9_DT ) (no widening)
cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: 0: signed int 

        with inferred parameters:
          ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 


    with inferred parameters:
      ?=?: function
        with parameters
          pointer to signed int 
          signed int 
        returning 
          signed int 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _2_T ) -> signed int  (no widening)
  ( _1_T ) -> signed int  (no widening)
  ( _0_T ) -> signed int 


Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: 0: forall
                  T: incomplete type
                pointer to instance of type T (not function type) 

        with inferred parameters:
          ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 


    with inferred parameters:
      ?=?: forall
          DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type DT (not function type) 
          pointer to instance of type DT (not function type) 
        returning 
          pointer to instance of type DT (not function type) 


with inferred parameters:
  ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _1_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _0_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type) 
  ( _3_T _5_DT _7_DT _9_DT ) (no widening)


there are 2 alternatives before elimination
there are 2 alternatives after elimination
findSubExprs
Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: 0: signed int 

        with inferred parameters:
          ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 


    with inferred parameters:
      ?=?: function
        with parameters
          pointer to signed int 
          signed int 
        returning 
          signed int 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

(types:
    signed int 
)
Environment:   ( _2_T ) -> signed int  (no widening)
  ( _1_T ) -> signed int  (no widening)
  ( _0_T ) -> signed int 


Cost ( 0, 4, 0 ): Application of
  Variable Expression: id: forall
        T: type
          with assertions
            ?=?: pointer to function
                with parameters
                  pointer to instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 


      function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: 0: forall
                  T: incomplete type
                pointer to instance of type T (not function type) 

        with inferred parameters:
          ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 


    with inferred parameters:
      ?=?: forall
          DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type DT (not function type) 
          pointer to instance of type DT (not function type) 
        returning 
          pointer to instance of type DT (not function type) 


with inferred parameters:
  ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    forall
          _3_T: incomplete type
        pointer to instance of type _3_T (not function type) 
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _1_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _0_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type) 
  ( _3_T _5_DT _7_DT _9_DT ) (no widening)


working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: h: function
            with parameters
              null: pointer to signed int 
            returning 
              nothing 

(types:
            pointer to function
                with parameters
                  null: pointer to signed int 
                returning 
                  nothing 

)
        Environment: 
formal type is pointer to signed int 
actual type is signed int 
formal type is pointer to signed int 
actual type is forall
    _3_T: incomplete type
  pointer to instance of type _3_T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
T
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Application of
              Variable Expression: id: forall
                    T: type
                      with assertions
                        ?=?: pointer to function
                            with parameters
                              pointer to instance of type T (not function type) 
                              instance of type T (not function type) 
                            returning 
                              instance of type T (not function type) 


                  function
                  with parameters
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 

            to arguments
                              Application of
                  Variable Expression: id: forall
                        T: type
                          with assertions
                            ?=?: pointer to function
                                with parameters
                                  pointer to instance of type T (not function type) 
                                  instance of type T (not function type) 
                                returning 
                                  instance of type T (not function type) 


                      function
                      with parameters
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 

                to arguments
                                      Variable Expression: 0: forall
                          T: incomplete type
                        pointer to instance of type T (not function type) 

                with inferred parameters:
                  ?=?: forall
                      DT: incomplete type
                    function
                    with parameters
                      pointer to pointer to instance of type DT (not function type) 
                      pointer to instance of type DT (not function type) 
                    returning 
                      pointer to instance of type DT (not function type) 


            with inferred parameters:
              ?=?: forall
                  DT: incomplete type
                function
                with parameters
                  pointer to pointer to instance of type DT (not function type) 
                  pointer to instance of type DT (not function type) 
                returning 
                  pointer to instance of type DT (not function type) 


        with inferred parameters:
          ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 

--- results are
        forall
              _3_T: incomplete type
            pointer to instance of type _3_T (not function type) 

converting forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type) 
 to pointer to signed int 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        null: pointer to signed int 
actuals are:
                  Application of
            Variable Expression: id: forall
                  T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type T (not function type) 
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

          to arguments
                          Application of
                Variable Expression: id: forall
                      T: type
                        with assertions
                          ?=?: pointer to function
                              with parameters
                                pointer to instance of type T (not function type) 
                                instance of type T (not function type) 
                              returning 
                                instance of type T (not function type) 


                    function
                    with parameters
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 

              to arguments
                                  Application of
                    Variable Expression: id: forall
                          T: type
                            with assertions
                              ?=?: pointer to function
                                  with parameters
                                    pointer to instance of type T (not function type) 
                                    instance of type T (not function type) 
                                  returning 
                                    instance of type T (not function type) 


                        function
                        with parameters
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 

                  to arguments
                                          Variable Expression: 0: forall
                            T: incomplete type
                          pointer to instance of type T (not function type) 

                  with inferred parameters:
                    ?=?: forall
                        DT: incomplete type
                      function
                      with parameters
                        pointer to pointer to instance of type DT (not function type) 
                        pointer to instance of type DT (not function type) 
                      returning 
                        pointer to instance of type DT (not function type) 


              with inferred parameters:
                ?=?: forall
                    DT: incomplete type
                  function
                  with parameters
                    pointer to pointer to instance of type DT (not function type) 
                    pointer to instance of type DT (not function type) 
                  returning 
                    pointer to instance of type DT (not function type) 


          with inferred parameters:
            ?=?: forall
                DT: incomplete type
              function
              with parameters
                pointer to pointer to instance of type DT (not function type) 
                pointer to instance of type DT (not function type) 
              returning 
                pointer to instance of type DT (not function type) 


bindings are:
        ( _2_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type)  (no widening)
        ( _1_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type)  (no widening)
        ( _0_T ) -> forall
            _3_T: incomplete type
          pointer to instance of type _3_T (not function type)  (no widening)
        ( _3_T _5_DT _7_DT _9_DT ) -> signed int  (no widening)
cost of conversion is:( 0, 1, 0 )
alternatives before prune:
Cost ( 0, 1, 0 ): Application of
  Variable Expression: h: function
      with parameters
        null: pointer to signed int 
      returning 
        nothing 

to arguments
      Application of
      Variable Expression: id: forall
            T: type
              with assertions
                ?=?: pointer to function
                    with parameters
                      pointer to instance of type T (not function type) 
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 


          function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

    to arguments
              Application of
          Variable Expression: id: forall
                T: type
                  with assertions
                    ?=?: pointer to function
                        with parameters
                          pointer to instance of type T (not function type) 
                          instance of type T (not function type) 
                        returning 
                          instance of type T (not function type) 


              function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

        to arguments
                      Application of
              Variable Expression: id: forall
                    T: type
                      with assertions
                        ?=?: pointer to function
                            with parameters
                              pointer to instance of type T (not function type) 
                              instance of type T (not function type) 
                            returning 
                              instance of type T (not function type) 


                  function
                  with parameters
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 

            to arguments
                              Variable Expression: 0: forall
                      T: incomplete type
                    pointer to instance of type T (not function type) 

            with inferred parameters:
              ?=?: forall
                  DT: incomplete type
                function
                with parameters
                  pointer to pointer to instance of type DT (not function type) 
                  pointer to instance of type DT (not function type) 
                returning 
                  pointer to instance of type DT (not function type) 


        with inferred parameters:
          ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 


    with inferred parameters:
      ?=?: forall
          DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type DT (not function type) 
          pointer to instance of type DT (not function type) 
        returning 
          pointer to instance of type DT (not function type) 


(types:
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _1_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _0_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _3_T _5_DT _7_DT _9_DT ) -> signed int  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Application of
    Variable Expression: h: function
        with parameters
          null: pointer to signed int 
        returning 
          nothing 

  to arguments
          Application of
        Variable Expression: id: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

      to arguments
                  Application of
            Variable Expression: id: forall
                  T: type
                    with assertions
                      ?=?: pointer to function
                          with parameters
                            pointer to instance of type T (not function type) 
                            instance of type T (not function type) 
                          returning 
                            instance of type T (not function type) 


                function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

          to arguments
                          Application of
                Variable Expression: id: forall
                      T: type
                        with assertions
                          ?=?: pointer to function
                              with parameters
                                pointer to instance of type T (not function type) 
                                instance of type T (not function type) 
                              returning 
                                instance of type T (not function type) 


                    function
                    with parameters
                      instance of type T (not function type) 
                    returning 
                      instance of type T (not function type) 

              to arguments
                                  Variable Expression: 0: forall
                        T: incomplete type
                      pointer to instance of type T (not function type) 

              with inferred parameters:
                ?=?: forall
                    DT: incomplete type
                  function
                  with parameters
                    pointer to pointer to instance of type DT (not function type) 
                    pointer to instance of type DT (not function type) 
                  returning 
                    pointer to instance of type DT (not function type) 


          with inferred parameters:
            ?=?: forall
                DT: incomplete type
              function
              with parameters
                pointer to pointer to instance of type DT (not function type) 
                pointer to instance of type DT (not function type) 
              returning 
                pointer to instance of type DT (not function type) 


      with inferred parameters:
        ?=?: forall
            DT: incomplete type
          function
          with parameters
            pointer to pointer to instance of type DT (not function type) 
            pointer to instance of type DT (not function type) 
          returning 
            pointer to instance of type DT (not function type) 



to:
  nothing
(types:
)
Environment:   ( _2_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _1_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _0_T ) -> forall
      _3_T: incomplete type
    pointer to instance of type _3_T (not function type)  (no widening)
  ( _3_T _5_DT _7_DT _9_DT ) -> signed int  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
int ___operator_assign__Fi_Pii_(int *, int );
void *___operator_assign__A0_1_0__FPd0_PPd0Pd0_(void **, void *);
void __a__F__(){
    void __f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *);
    void __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(void (*__p__PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0_)(void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void *));
    __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(__f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_);
}
void __g__F__(){
    void __h__F_Pi_(int *__null__Pi);
    void __id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *, void *);
    void *___constant_zero__A0_1_0__Pd0;
    int ___constant_zero__i;
    void *_thunk0(void **_p0, void *_p1){
        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
    }
    void *_thunk1(void **_p0, void *_p1){
        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
    }
    void *_thunk2(void **_p0, void *_p1){
        return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1);
    }
    void *_temp0;
    void _adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){
        ((*((_3_T **)_ret))=((void *(*)(void **, void *))_adaptee)(_p0, (*((_3_T **)_p1))));
    }
    void *_temp1;
    void *_temp2;
    __h__F_Pi_((__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk2)), (&_temp2), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk1)), (&_temp1), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk0)), (&_temp0), (&___constant_zero__A0_1_0__Pd0)) , _temp0))) , _temp1))) , _temp2));
}
