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 
    instance of type T (not function type) 

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 
      instance of type T (not function type) 


decl is f: function
  with parameters
    signed int 
  returning 
    nothing 

newExpr is Variable Expression: f: function
    with parameters
      signed int 
    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 
      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: 

Cost ( 0, 0, 0 ): Variable Expression: f: function
    with parameters
      signed int 
    returning 
      nothing 

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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is x
decl is x: signed int 
newExpr is Variable Expression: x: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
(types:
    lvalue signed int 
)
Environment: 

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

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: f: function
            with parameters
              signed int 
            returning 
              nothing 

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

)
        Environment: 
formal type is signed int 
actual type is lvalue signed int 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
working on alternative: 
        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 
              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 lvalue 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===
===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 _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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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 29 ?=?: 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 5 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

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

converting lvalue signed int 
 to signed int 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        signed int 
actuals are:
                  Variable Expression: x: signed int 

bindings are:
cost of conversion is:( 0, 0, 0 )
actual expression:
        Variable Expression: x: signed int 
--- results are
        lvalue signed int 

converting lvalue 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:
                  Variable Expression: x: signed int 

bindings are:
        ( _0_T ) -> signed int 
cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: f: function
      with parameters
        signed int 
      returning 
        nothing 

to arguments
      Variable Expression: x: signed int 

(types:
)
Environment: 

Cost ( 0, 4, 0 ): Application of
  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 
        instance of type T (not function type) 

to arguments
      Variable Expression: x: 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:   ( _0_T ) -> signed int 


there are 2 alternatives before elimination
there are 2 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Application of
    Variable Expression: f: function
        with parameters
          signed int 
        returning 
          nothing 

  to arguments
          Variable Expression: x: signed int 


to:
  nothing
(types:
)
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 
    instance of type T (not function type) 

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 
      instance of type T (not function type) 


decl is f: function
  with parameters
    signed int 
  returning 
    nothing 

newExpr is Variable Expression: f: function
    with parameters
      signed int 
    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 
      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: 

Cost ( 0, 0, 0 ): Variable Expression: f: function
    with parameters
      signed int 
    returning 
      nothing 

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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is y
decl is y: pointer to function
  returning 
    nothing 

newExpr is Variable Expression: y: pointer to function
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
    returning 
      nothing 

(types:
    lvalue pointer to function
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
    returning 
      nothing 

(types:
    lvalue pointer to function
        returning 
          nothing 

)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: f: function
            with parameters
              signed int 
            returning 
              nothing 

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

)
        Environment: 
formal type is signed int 
actual type is lvalue pointer to function
  returning 
    nothing 

working on alternative: 
        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 
              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 lvalue pointer to function
  returning 
    nothing 

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===
===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 _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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


success!
satisfying assertion 29 ?=?: 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 25 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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:
        Variable Expression: y: pointer to function
            returning 
              nothing 

--- results are
        lvalue pointer to function
            returning 
              nothing 


converting lvalue pointer to function
          returning 
            nothing 

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

converting pointer to function
          with parameters
            pointer to pointer to function
                returning 
                  nothing 

            pointer to function
                returning 
                  nothing 

          returning 
            pointer to function
                returning 
                  nothing 


 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:
                  Variable Expression: y: pointer to function
              returning 
                nothing 


bindings are:
        ( _0_T ) -> pointer to function
          returning 
            nothing 

cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 4, 0 ): Application of
  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 
        instance of type T (not function type) 

to arguments
      Variable Expression: y: pointer to function
        returning 
          nothing 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _0_T ) -> pointer to function
    returning 
      nothing 



there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    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 
          instance of type T (not function type) 

  to arguments
          Variable Expression: y: pointer to function
          returning 
            nothing 


  with inferred parameters:
    ?=?: function
      with parameters
        pointer to pointer to function
            returning 
              nothing 

        pointer to function
            returning 
              nothing 

      returning 
        pointer to function
            returning 
              nothing 



to:
  nothing
(types:
)
Environment:   ( _0_T ) -> pointer to function
    returning 
      nothing 



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 
    instance of type T (not function type) 

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 
      instance of type T (not function type) 


decl is f: function
  with parameters
    signed int 
  returning 
    nothing 

newExpr is Variable Expression: f: function
    with parameters
      signed int 
    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 
      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: 

Cost ( 0, 0, 0 ): Variable Expression: f: function
    with parameters
      signed int 
    returning 
      nothing 

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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is z
decl is z: char 
newExpr is Variable Expression: z: char 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: z: char 
(types:
    lvalue char 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: z: char 
(types:
    lvalue char 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: f: function
            with parameters
              signed int 
            returning 
              nothing 

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

)
        Environment: 
formal type is signed int 
actual type is lvalue char 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
working on alternative: 
        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 
              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 lvalue char 
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===
===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 _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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

success!
satisfying assertion 29 ?=?: 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 21 ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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:
        Variable Expression: z: char 
--- results are
        lvalue char 

converting lvalue char 
 to signed int 
cost is( 0, 0, 4 )
Case +++++++++++++
formals are:
        signed int 
actuals are:
                  Cast of:
            Variable Expression: z: char 

          to:
            signed int 

bindings are:
cost of conversion is:( 0, 0, 4 )
actual expression:
        Variable Expression: z: char 
--- results are
        lvalue char 

converting lvalue char 
 to instance of type _0_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to char 
            char 
          returning 
            char 

 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:
                  Variable Expression: z: char 

bindings are:
        ( _0_T ) -> char 
cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 0, 4 ): Application of
  Variable Expression: f: function
      with parameters
        signed int 
      returning 
        nothing 

to arguments
      Cast of:
      Variable Expression: z: char 

    to:
      signed int 

(types:
)
Environment: 

Cost ( 0, 4, 0 ): Application of
  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 
        instance of type T (not function type) 

to arguments
      Variable Expression: z: char 

with inferred parameters:
  ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _0_T ) -> char 


there are 2 alternatives before elimination
there are 2 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Application of
    Variable Expression: f: function
        with parameters
          signed int 
        returning 
          nothing 

  to arguments
          Cast of:
        Variable Expression: z: char 

      to:
        signed int 


to:
  nothing
(types:
)
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 
    instance of type T (not function type) 

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 
      instance of type T (not function type) 


decl is f: function
  with parameters
    signed int 
  returning 
    nothing 

newExpr is Variable Expression: f: function
    with parameters
      signed int 
    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 
      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: 

Cost ( 0, 0, 0 ): Variable Expression: f: function
    with parameters
      signed int 
    returning 
      nothing 

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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is w
decl is w: float 
newExpr is Variable Expression: w: float 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: w: float 
(types:
    lvalue float 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: w: float 
(types:
    lvalue float 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: f: function
            with parameters
              signed int 
            returning 
              nothing 

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

)
        Environment: 
formal type is signed int 
actual type is lvalue float 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
working on alternative: 
        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 
              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 lvalue float 
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===
===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 _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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

success!
satisfying assertion 29 ?=?: 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 9 ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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:
        Variable Expression: w: float 
--- results are
        lvalue float 

converting lvalue float 
 to signed int 
cost is( 1, 0, 0 )
Case +++++++++++++
formals are:
        signed int 
actuals are:
                  Cast of:
            Variable Expression: w: float 

          to:
            signed int 

bindings are:
cost of conversion is:( 1, 0, 0 )
actual expression:
        Variable Expression: w: float 
--- results are
        lvalue float 

converting lvalue float 
 to instance of type _0_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to float 
            float 
          returning 
            float 

 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:
                  Variable Expression: w: float 

bindings are:
        ( _0_T ) -> float 
cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 1, 0, 0 ): Application of
  Variable Expression: f: function
      with parameters
        signed int 
      returning 
        nothing 

to arguments
      Cast of:
      Variable Expression: w: float 

    to:
      signed int 

(types:
)
Environment: 

Cost ( 0, 4, 0 ): Application of
  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 
        instance of type T (not function type) 

to arguments
      Variable Expression: w: float 

with inferred parameters:
  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _0_T ) -> float 


there are 2 alternatives before elimination
there are 2 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    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 
          instance of type T (not function type) 

  to arguments
          Variable Expression: w: float 

  with inferred parameters:
    ?=?: function
      with parameters
        pointer to float 
        float 
      returning 
        float 


to:
  nothing
(types:
)
Environment:   ( _0_T ) -> float 


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

  returning 
    nothing 

newExpr is Variable Expression: h: function
    with parameters
      p: pointer to function
          returning 
            nothing 

    returning 
      nothing 


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

    returning 
      nothing 

(types:
    pointer to function
        with parameters
          p: pointer to function
              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 
    instance of type T (not function type) 

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 
      instance of type T (not function type) 


decl is f: function
  with parameters
    signed int 
  returning 
    nothing 

newExpr is Variable Expression: f: function
    with parameters
      signed int 
    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 
      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: 

Cost ( 0, 0, 0 ): Variable Expression: f: function
    with parameters
      signed int 
    returning 
      nothing 

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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is y
decl is y: pointer to function
  returning 
    nothing 

newExpr is Variable Expression: y: pointer to function
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
    returning 
      nothing 

(types:
    lvalue pointer to function
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: y: pointer to function
    returning 
      nothing 

(types:
    lvalue pointer to function
        returning 
          nothing 

)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: f: function
            with parameters
              signed int 
            returning 
              nothing 

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

)
        Environment: 
formal type is signed int 
actual type is lvalue pointer to function
  returning 
    nothing 

working on alternative: 
        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 
              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 lvalue pointer to function
  returning 
    nothing 

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===
===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 _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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


success!
satisfying assertion 29 ?=?: 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 25 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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:
        Variable Expression: y: pointer to function
            returning 
              nothing 

--- results are
        lvalue pointer to function
            returning 
              nothing 


converting lvalue pointer to function
          returning 
            nothing 

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

converting pointer to function
          with parameters
            pointer to pointer to function
                returning 
                  nothing 

            pointer to function
                returning 
                  nothing 

          returning 
            pointer to function
                returning 
                  nothing 


 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:
                  Variable Expression: y: pointer to function
              returning 
                nothing 


bindings are:
        ( _0_T ) -> pointer to function
          returning 
            nothing 

cost of conversion is:( 0, 4, 0 )
alternatives before prune:
Cost ( 0, 4, 0 ): Application of
  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 
        instance of type T (not function type) 

to arguments
      Variable Expression: y: pointer to function
        returning 
          nothing 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _0_T ) -> pointer to function
    returning 
      nothing 



there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 4, 0 ): Application of
  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 
        instance of type T (not function type) 

to arguments
      Variable Expression: y: pointer to function
        returning 
          nothing 


with inferred parameters:
  ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        returning 
          nothing 

)
Environment:   ( _0_T ) -> pointer to function
    returning 
      nothing 



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

            returning 
              nothing 

(types:
            pointer to function
                with parameters
                  p: pointer to function
                      returning 
                        nothing 

                returning 
                  nothing 

)
        Environment: 
formal type is pointer to function
  returning 
    nothing 

actual type is pointer to function
  returning 
    nothing 

need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Application of
          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 
                instance of type T (not function type) 

        to arguments
                      Variable Expression: y: pointer to function
                returning 
                  nothing 


        with inferred parameters:
          ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


--- results are
        pointer to function
            returning 
              nothing 


converting pointer to function
          returning 
            nothing 

 to pointer to function
          returning 
            nothing 

cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        p: pointer to function
            returning 
              nothing 

actuals are:
                  Application of
            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 
                  instance of type T (not function type) 

          to arguments
                          Variable Expression: y: pointer to function
                  returning 
                    nothing 


          with inferred parameters:
            ?=?: function
              with parameters
                pointer to pointer to function
                    returning 
                      nothing 

                pointer to function
                    returning 
                      nothing 

              returning 
                pointer to function
                    returning 
                      nothing 



bindings are:
        ( _0_T ) -> pointer to function
          returning 
            nothing 
 (no widening)
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: h: function
      with parameters
        p: pointer to function
            returning 
              nothing 

      returning 
        nothing 

to arguments
      Application of
      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 
            instance of type T (not function type) 

    to arguments
              Variable Expression: y: pointer to function
            returning 
              nothing 


    with inferred parameters:
      ?=?: function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 



(types:
)
Environment:   ( _0_T ) -> pointer to function
    returning 
      nothing 
 (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
          p: pointer to function
              returning 
                nothing 

        returning 
          nothing 

  to arguments
          Application of
        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 
              instance of type T (not function type) 

      to arguments
                  Variable Expression: y: pointer to function
              returning 
                nothing 


      with inferred parameters:
        ?=?: function
          with parameters
            pointer to pointer to function
                returning 
                  nothing 

            pointer to function
                returning 
                  nothing 

          returning 
            pointer to function
                returning 
                  nothing 




to:
  nothing
(types:
)
Environment:   ( _0_T ) -> pointer to function
    returning 
      nothing 
 (no widening)


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) 
    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) 
      instance of type T (not function type) 
    returning 
      nothing 


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) 


    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 T (not function type) 
    instance of type U (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) 


      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 T (not function type) 
      instance of type U (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) 
      instance of type T (not function type) 
    returning 
      nothing 

(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) 
          instance of type _0_T (not function type) 
        returning 
          nothing 

)
Environment: 

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) 


      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 T (not function type) 
      instance of type U (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) 


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


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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is x
decl is x: signed int 
newExpr is Variable Expression: x: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
(types:
    lvalue signed int 
)
Environment: 

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

nameExpr is y
decl is y: float 
newExpr is Variable Expression: y: float 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: y: float 
(types:
    lvalue float 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: y: float 
(types:
    lvalue float 
)
Environment: 

working on alternative: 
        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) 


              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 T (not function type) 
              instance of type U (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) 


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


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

)
        Environment: 
formal type is instance of type _1_T (not function type) 
actual type is lvalue signed int 
formal type is instance of type _2_U (not function type) 
actual type is lvalue float 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _2_U (not function type) 
            instance of type _2_U (not function type) 
          returning 
            instance of type _2_U (not function type) 
(used)?=?: 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 _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 

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

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

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

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

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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to char 
    char 
  returning 
    char 

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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to float 
    float 
  returning 
    float 

success!
satisfying assertion 56 ?=?: pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with declaration 9 ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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 52 ?=?: 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 5 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

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_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

working on alternative: 
        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) 
              instance of type T (not function type) 
            returning 
              nothing 

(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) 
                  instance of type _0_T (not function type) 
                returning 
                  nothing 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is lvalue signed int 
formal type is instance of type _0_T (not function type) 
actual type is lvalue float 
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===
===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 _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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

success!
satisfying assertion 45 ?=?: 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 9 ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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:
        Variable Expression: x: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _1_T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: y: float 
--- results are
        lvalue float 

converting lvalue float 
 to instance of type _2_U (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 )

converting pointer to function
          with parameters
            pointer to float 
            float 
          returning 
            float 

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

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

                  Variable Expression: y: float 

bindings are:
        ( _1_T ) -> signed int 
        ( _2_U ) -> float 
cost of conversion is:( 0, 8, 0 )
actual expression:
        Variable Expression: x: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _0_T (not function type) 
cost is( 0, 0, 5 )
actual expression:
        Variable Expression: y: float 
--- results are
        lvalue float 

converting lvalue float 
 to instance of type _0_T (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to float 
            float 
          returning 
            float 

 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) 
        instance of type _0_T (not function type) 
actuals are:
                  Cast of:
            Variable Expression: x: signed int 

          to:
            float 

                  Variable Expression: y: float 

bindings are:
        ( _0_T ) -> float 
cost of conversion is:( 0, 5, 5 )
alternatives before prune:
Cost ( 0, 8, 0 ): Application of
  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) 


        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 T (not function type) 
        instance of type U (not function type) 
      returning 
        nothing 

to arguments
      Variable Expression: x: signed int 

      Variable Expression: y: float 

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

  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
)
Environment:   ( _1_T ) -> signed int 
  ( _2_U ) -> float 


Cost ( 0, 5, 5 ): Application of
  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) 
        instance of type T (not function type) 
      returning 
        nothing 

to arguments
      Cast of:
      Variable Expression: x: signed int 

    to:
      float 

      Variable Expression: y: float 

with inferred parameters:
  ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
)
Environment:   ( _0_T ) -> float 


cost ( 0, 5, 5 ) beats ( 0, 8, 0 )
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: 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) 
          instance of type T (not function type) 
        returning 
          nothing 

  to arguments
          Cast of:
        Variable Expression: x: signed int 

      to:
        float 

          Variable Expression: y: float 

  with inferred parameters:
    ?=?: function
      with parameters
        pointer to float 
        float 
      returning 
        float 


to:
  nothing
(types:
)
Environment:   ( _0_T ) -> float 


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) 
    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) 
      instance of type T (not function type) 
    returning 
      nothing 


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) 


    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 T (not function type) 
    instance of type U (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) 


      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 T (not function type) 
      instance of type U (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) 
      instance of type T (not function type) 
    returning 
      nothing 

(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) 
          instance of type _0_T (not function type) 
        returning 
          nothing 

)
Environment: 

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) 


      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 T (not function type) 
      instance of type U (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) 


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


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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is z
decl is z: pointer to signed int 
newExpr is Variable Expression: z: pointer to signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: z: pointer to signed int 
(types:
    lvalue pointer to signed int 
)
Environment: 

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

nameExpr is w
decl is w: pointer to float 
newExpr is Variable Expression: w: pointer to float 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: w: pointer to float 
(types:
    lvalue pointer to float 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: w: pointer to float 
(types:
    lvalue pointer to float 
)
Environment: 

working on alternative: 
        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) 


              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 T (not function type) 
              instance of type U (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) 


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


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

)
        Environment: 
formal type is instance of type _1_T (not function type) 
actual type is lvalue pointer to signed int 
formal type is instance of type _2_U (not function type) 
actual type is lvalue pointer to float 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _2_U (not function type) 
            instance of type _2_U (not function type) 
          returning 
            instance of type _2_U (not function type) 
(used)?=?: 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 _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 

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

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

success!
satisfying assertion 56 ?=?: pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with declaration 17 ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

success!
satisfying assertion 52 ?=?: 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 13 ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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 ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to char 
    char 
  returning 
    char 

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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

working on alternative: 
        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) 
              instance of type T (not function type) 
            returning 
              nothing 

(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) 
                  instance of type _0_T (not function type) 
                returning 
                  nothing 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is lvalue pointer to signed int 
formal type is instance of type _0_T (not function type) 
actual type is lvalue pointer to float 
actual expression:
        Variable Expression: z: pointer to signed int 
--- results are
        lvalue pointer to signed int 

converting lvalue pointer to signed int 
 to instance of type _1_T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: w: pointer to float 
--- results are
        lvalue pointer to float 

converting lvalue pointer to float 
 to instance of type _2_U (not function type) 
cost is( 0, 0, 0 )

converting pointer to function
          with parameters
            pointer to pointer to signed int 
            pointer to signed int 
          returning 
            pointer to 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 )

converting pointer to function
          with parameters
            pointer to pointer to float 
            pointer to float 
          returning 
            pointer to float 

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

cost of conversion is ( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type _1_T (not function type) 
        instance of type _2_U (not function type) 
actuals are:
                  Variable Expression: z: pointer to signed int 

                  Variable Expression: w: pointer to float 

bindings are:
        ( _1_T ) -> pointer to signed int 
        ( _2_U ) -> pointer to float 
cost of conversion is:( 0, 8, 0 )
alternatives before prune:
Cost ( 0, 8, 0 ): Application of
  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) 


        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 T (not function type) 
        instance of type U (not function type) 
      returning 
        nothing 

to arguments
      Variable Expression: z: pointer to signed int 

      Variable Expression: w: pointer to float 

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

  ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
)
Environment:   ( _1_T ) -> pointer to signed int 
  ( _2_U ) -> pointer to float 


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: 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) 


          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 T (not function type) 
          instance of type U (not function type) 
        returning 
          nothing 

  to arguments
          Variable Expression: z: pointer to signed int 

          Variable Expression: w: pointer to float 

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

    ?=?: function
      with parameters
        pointer to pointer to float 
        pointer to float 
      returning 
        pointer to float 


to:
  nothing
(types:
)
Environment:   ( _1_T ) -> pointer to signed int 
  ( _2_U ) -> pointer to float 


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) 
    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) 
      instance of type T (not function type) 
    returning 
      nothing 


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) 


    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 T (not function type) 
    instance of type U (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) 


      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 T (not function type) 
      instance of type U (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) 
      instance of type T (not function type) 
    returning 
      nothing 

(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) 
          instance of type _0_T (not function type) 
        returning 
          nothing 

)
Environment: 

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) 


      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 T (not function type) 
      instance of type U (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) 


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


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

)
Environment: 

there are 2 alternatives before elimination
there are 2 alternatives after elimination
nameExpr is x
decl is x: signed int 
newExpr is Variable Expression: x: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: x: signed int 
(types:
    lvalue signed int 
)
Environment: 

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

nameExpr is z
decl is z: pointer to signed int 
newExpr is Variable Expression: z: pointer to signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: z: pointer to signed int 
(types:
    lvalue pointer to signed int 
)
Environment: 

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

working on alternative: 
        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) 


              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 T (not function type) 
              instance of type U (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) 


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


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

)
        Environment: 
formal type is instance of type _1_T (not function type) 
actual type is lvalue signed int 
formal type is instance of type _2_U (not function type) 
actual type is lvalue pointer to 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)?=?: pointer to function
          with parameters
            pointer to instance of type _2_U (not function type) 
            instance of type _2_U (not function type) 
          returning 
            instance of type _2_U (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 ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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 52 ?=?: 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 5 ?=?: function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

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

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

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

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

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

success!
satisfying assertion 56 ?=?: pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with declaration 13 ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to char 
    char 
  returning 
    char 

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

unifying pointer to function
  with parameters
    pointer to instance of type _2_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to float 
    float 
  returning 
    float 

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_U (not function type) 
    instance of type _2_U (not function type) 
  returning 
    instance of type _2_U (not function type) 
 with pointer to function
  with parameters
    pointer to signed int 
    signed int 
  returning 
    signed int 

working on alternative: 
        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) 
              instance of type T (not function type) 
            returning 
              nothing 

(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) 
                  instance of type _0_T (not function type) 
                returning 
                  nothing 

)
        Environment: 
formal type is instance of type _0_T (not function type) 
actual type is lvalue signed int 
formal type is instance of type _0_T (not function type) 
actual type is lvalue pointer to signed int 
actual expression:
        Variable Expression: x: signed int 
--- results are
        lvalue signed int 

converting lvalue signed int 
 to instance of type _1_T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: z: pointer to signed int 
--- results are
        lvalue pointer to signed int 

converting lvalue pointer to signed int 
 to instance of type _2_U (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 )

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

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

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

                  Variable Expression: z: pointer to signed int 

bindings are:
        ( _1_T ) -> signed int 
        ( _2_U ) -> pointer to signed int 
cost of conversion is:( 0, 8, 0 )
alternatives before prune:
Cost ( 0, 8, 0 ): Application of
  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) 


        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 T (not function type) 
        instance of type U (not function type) 
      returning 
        nothing 

to arguments
      Variable Expression: x: signed int 

      Variable Expression: z: pointer to signed int 

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

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

(types:
)
Environment:   ( _1_T ) -> signed int 
  ( _2_U ) -> pointer to signed int 


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: 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) 


          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 T (not function type) 
          instance of type U (not function type) 
        returning 
          nothing 

  to arguments
          Variable Expression: x: signed int 

          Variable Expression: z: pointer to signed int 

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

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


to:
  nothing
(types:
)
Environment:   ( _1_T ) -> signed int 
  ( _2_U ) -> pointer to signed int 


there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is left
decl is left: instance of type T (not function type) 
newExpr is Variable Expression: left: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Variable Expression: left: instance of type T (not function type) 

to:
  instance of type T (not function type) 
(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


decl is ?=?: 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) 

newExpr is Variable Expression: ?=?: 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) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: 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) 

(types:
    lvalue 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) 

)
Environment: 

there are 7 alternatives before elimination
there are 7 alternatives after elimination
nameExpr is temp
decl is temp: instance of type T (not function type) with initializer 
Simple Initializer:   Cast of:
    Variable Expression: left: instance of type T (not function type) 

  to:
    instance of type T (not function type) 
  with environment:
    Types:
    Non-types:

newExpr is Variable Expression: temp: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: temp: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: temp: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: temp: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

nameExpr is left
decl is left: instance of type T (not function type) 
newExpr is Variable Expression: left: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: 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) 

(types:
            lvalue 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) 

)
        Environment: 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Address of:
          Variable Expression: temp: instance of type T (not function type) 
--- results are
        pointer to instance of type T (not function type) 

converting pointer to instance of type T (not function type) 
 to pointer to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: left: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        pointer to instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Address of:
            Variable Expression: temp: instance of type T (not function type) 

                  Variable Expression: left: instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?=?: 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) 

to arguments
      Address of:
      Variable Expression: temp: instance of type T (not function type) 

      Variable Expression: left: instance of type T (not function type) 

(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    Variable Expression: ?=?: 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) 

  to arguments
          Address of:
        Variable Expression: temp: instance of type T (not function type) 

          Variable Expression: left: instance of type T (not function type) 


to:
  nothing
(types:
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


decl is ?=?: 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) 

newExpr is Variable Expression: ?=?: 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) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: 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) 

(types:
    lvalue 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) 

)
Environment: 

there are 7 alternatives before elimination
there are 7 alternatives after elimination
nameExpr is left
decl is left: instance of type T (not function type) 
newExpr is Variable Expression: left: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: left: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: left: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: left: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

nameExpr is right
decl is right: instance of type T (not function type) 
newExpr is Variable Expression: right: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: right: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: right: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: 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) 

(types:
            lvalue 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) 

)
        Environment: 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Address of:
          Variable Expression: left: instance of type T (not function type) 
--- results are
        pointer to instance of type T (not function type) 

converting pointer to instance of type T (not function type) 
 to pointer to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: right: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        pointer to instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Address of:
            Variable Expression: left: instance of type T (not function type) 

                  Variable Expression: right: instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?=?: 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) 

to arguments
      Address of:
      Variable Expression: left: instance of type T (not function type) 

      Variable Expression: right: instance of type T (not function type) 

(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    Variable Expression: ?=?: 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) 

  to arguments
          Address of:
        Variable Expression: left: instance of type T (not function type) 

          Variable Expression: right: instance of type T (not function type) 


to:
  nothing
(types:
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


decl is ?=?: 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) 

newExpr is Variable Expression: ?=?: 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) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: 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) 

(types:
    lvalue 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) 

)
Environment: 

there are 7 alternatives before elimination
there are 7 alternatives after elimination
nameExpr is right
decl is right: instance of type T (not function type) 
newExpr is Variable Expression: right: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: right: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: right: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: right: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

nameExpr is temp
decl is temp: instance of type T (not function type) with initializer 
Simple Initializer:   Cast of:
    Variable Expression: left: instance of type T (not function type) 

  to:
    instance of type T (not function type) 
  with environment:
    Types:
    Non-types:

newExpr is Variable Expression: temp: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: temp: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: temp: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: 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) 

(types:
            lvalue 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) 

)
        Environment: 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Address of:
          Variable Expression: right: instance of type T (not function type) 
--- results are
        pointer to instance of type T (not function type) 

converting pointer to instance of type T (not function type) 
 to pointer to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: temp: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        pointer to instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Address of:
            Variable Expression: right: instance of type T (not function type) 

                  Variable Expression: temp: instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?=?: 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) 

to arguments
      Address of:
      Variable Expression: right: instance of type T (not function type) 

      Variable Expression: temp: instance of type T (not function type) 

(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    Variable Expression: ?=?: 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) 

  to arguments
          Address of:
        Variable Expression: right: instance of type T (not function type) 

          Variable Expression: temp: instance of type T (not function type) 


to:
  nothing
(types:
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

there are 10 alternatives before elimination
there are 10 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Member Expression, with field: 
  i: instance of type P1 (not function type) 
from aggregate: 
  Applying untyped: 
      Name: *?
  ...to: 
      Variable Expression: _dst: pointer to instance of struct __anonymous0 
(types:
    lvalue instance of type P1 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Member Expression, with field: 
    i: instance of type P1 (not function type) 
  from aggregate: 
    Applying untyped: 
        Name: *?
    ...to: 
        Variable Expression: _dst: pointer to instance of struct __anonymous0 
(types:
    pointer to instance of type P1 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Member Expression, with field: 
    i: instance of type P1 (not function type) 
  from aggregate: 
    Applying untyped: 
        Name: *?
    ...to: 
        Variable Expression: _dst: pointer to instance of struct __anonymous0 
(types:
    pointer to instance of type P1 (not function type) 
)
Environment: 

alternatives before prune:
Cost ( 0, 0, 0 ): Member Expression, with field: 
  i: instance of type P1 (not function type) 
from aggregate: 
  Variable Expression: _src: instance of struct __anonymous0 
(types:
    lvalue instance of type P1 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Member Expression, with field: 
  i: instance of type P1 (not function type) 
from aggregate: 
  Variable Expression: _src: instance of struct __anonymous0 
(types:
    lvalue instance of type P1 (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T3 (not function type) 
              _src: instance of type T3 (not function type) 
            returning 
              instance of type T3 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T3 (not function type) 
                  _src: instance of type T3 (not function type) 
                returning 
                  instance of type T3 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T2 (not function type) 
              _src: instance of type T2 (not function type) 
            returning 
              instance of type T2 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T2 (not function type) 
                  _src: instance of type T2 (not function type) 
                returning 
                  instance of type T2 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T1 (not function type) 
              _src: instance of type T1 (not function type) 
            returning 
              instance of type T1 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T1 (not function type) 
                  _src: instance of type T1 (not function type) 
                returning 
                  instance of type T1 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to instance of type P1 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
            with parameters
              _dst: pointer to instance of struct __anonymous0 
              _src: instance of struct __anonymous0 
            returning 
              instance of struct __anonymous0 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of struct __anonymous0 
                  _src: instance of struct __anonymous0 
                returning 
                  instance of struct __anonymous0 

)
        Environment: 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to instance of type P1 (not function type) 
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

there are 10 alternatives before elimination
there are 10 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Member Expression, with field: 
  j: instance of type P2 (not function type) 
from aggregate: 
  Applying untyped: 
      Name: *?
  ...to: 
      Variable Expression: _dst: pointer to instance of struct __anonymous0 
(types:
    lvalue instance of type P2 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Member Expression, with field: 
    j: instance of type P2 (not function type) 
  from aggregate: 
    Applying untyped: 
        Name: *?
    ...to: 
        Variable Expression: _dst: pointer to instance of struct __anonymous0 
(types:
    pointer to instance of type P2 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Member Expression, with field: 
    j: instance of type P2 (not function type) 
  from aggregate: 
    Applying untyped: 
        Name: *?
    ...to: 
        Variable Expression: _dst: pointer to instance of struct __anonymous0 
(types:
    pointer to instance of type P2 (not function type) 
)
Environment: 

alternatives before prune:
Cost ( 0, 0, 0 ): Member Expression, with field: 
  j: instance of type P2 (not function type) 
from aggregate: 
  Variable Expression: _src: instance of struct __anonymous0 
(types:
    lvalue instance of type P2 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Member Expression, with field: 
  j: instance of type P2 (not function type) 
from aggregate: 
  Variable Expression: _src: instance of struct __anonymous0 
(types:
    lvalue instance of type P2 (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T3 (not function type) 
              _src: instance of type T3 (not function type) 
            returning 
              instance of type T3 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T3 (not function type) 
                  _src: instance of type T3 (not function type) 
                returning 
                  instance of type T3 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T2 (not function type) 
              _src: instance of type T2 (not function type) 
            returning 
              instance of type T2 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T2 (not function type) 
                  _src: instance of type T2 (not function type) 
                returning 
                  instance of type T2 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T1 (not function type) 
              _src: instance of type T1 (not function type) 
            returning 
              instance of type T1 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T1 (not function type) 
                  _src: instance of type T1 (not function type) 
                returning 
                  instance of type T1 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to instance of type P2 (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
            with parameters
              _dst: pointer to instance of struct __anonymous0 
              _src: instance of struct __anonymous0 
            returning 
              instance of struct __anonymous0 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of struct __anonymous0 
                  _src: instance of struct __anonymous0 
                returning 
                  instance of struct __anonymous0 

)
        Environment: 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to instance of type P2 (not function type) 
alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: _src: instance of struct __anonymous0 
(types:
    lvalue instance of struct __anonymous0 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
(types:
    instance of struct __anonymous0 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

there are 10 alternatives before elimination
there are 10 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type T2 (not function type) 
(types:
    lvalue pointer to instance of type T2 (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type w3 (not function type) 
    _src: instance of type w3 (not function type) 
  returning 
    instance of type w3 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type w3 (not function type) 

    to:
      pointer to instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 

    Cast of:
      Variable Expression: _src: instance of type w3 (not function type) 

    to:
      instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 




newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type w3 (not function type) 
          _src: instance of type w3 (not function type) 
        returning 
          instance of type w3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

there are 11 alternatives before elimination
there are 11 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type w3 (not function type) 
(types:
    lvalue pointer to instance of type w3 (not function type) 
)
Environment: 

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

decl is 0: const instance of type T1 (not function type) 
newExpr is Variable Expression: 0: const instance of type T1 (not function type) 

decl is 0: const instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 


decl is 0: const instance of type T3 (not function type) 
newExpr is Variable Expression: 0: const instance of type T3 (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

there are 4 alternatives before elimination
there are 4 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Variable Expression: 0: const instance of type T (not function type) 

to:
  instance of type T (not function type) 
(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type w3 (not function type) 
    _src: instance of type w3 (not function type) 
  returning 
    instance of type w3 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type w3 (not function type) 

    to:
      pointer to instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 

    Cast of:
      Variable Expression: _src: instance of type w3 (not function type) 

    to:
      instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 




newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


decl is ?=?: 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) 

newExpr is Variable Expression: ?=?: 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) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type w3 (not function type) 
          _src: instance of type w3 (not function type) 
        returning 
          instance of type w3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: 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) 

(types:
    lvalue 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) 

)
Environment: 

there are 12 alternatives before elimination
there are 12 alternatives after elimination
nameExpr is total
decl is total: instance of type T (not function type) with initializer 
Simple Initializer:   Cast of:
    Variable Expression: 0: const instance of type T (not function type) 

  to:
    instance of type T (not function type) 
  with environment:
    Types:
    Non-types:

newExpr is Variable Expression: total: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: total: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: total: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: total: instance of type T (not function type) 
(types:
    pointer to instance of type T (not function type) 
)
Environment: 

nameExpr is 0
decl is 0: const instance of type T (not function type) 
newExpr is Variable Expression: 0: const instance of type T (not function type) 

decl is 0: const instance of type T1 (not function type) 
newExpr is Variable Expression: 0: const instance of type T1 (not function type) 

decl is 0: const instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 


decl is 0: const instance of type T3 (not function type) 
newExpr is Variable Expression: 0: const instance of type T3 (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

there are 4 alternatives before elimination
there are 4 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to char 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to signed int 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to float 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type w3 (not function type) 
              _src: instance of type w3 (not function type) 
            returning 
              instance of type w3 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type w3 (not function type) 
                  _src: instance of type w3 (not function type) 
                returning 
                  instance of type w3 (not function type) 

)
        Environment: 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T3 (not function type) 
              _src: instance of type T3 (not function type) 
            returning 
              instance of type T3 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T3 (not function type) 
                  _src: instance of type T3 (not function type) 
                returning 
                  instance of type T3 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T2 (not function type) 
              _src: instance of type T2 (not function type) 
            returning 
              instance of type T2 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T2 (not function type) 
                  _src: instance of type T2 (not function type) 
                returning 
                  instance of type T2 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T1 (not function type) 
              _src: instance of type T1 (not function type) 
            returning 
              instance of type T1 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T1 (not function type) 
                  _src: instance of type T1 (not function type) 
                returning 
                  instance of type T1 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
            with parameters
              _dst: pointer to instance of struct __anonymous0 
              _src: instance of struct __anonymous0 
            returning 
              instance of struct __anonymous0 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of struct __anonymous0 
                  _src: instance of struct __anonymous0 
                returning 
                  instance of struct __anonymous0 

)
        Environment: 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to instance of type T (not function type) 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: 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) 

(types:
            lvalue 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) 

)
        Environment: 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is const lvalue instance of type T3 (not function type) 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is const lvalue instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is const lvalue instance of type T1 (not function type) 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is const lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Address of:
          Variable Expression: total: instance of type T (not function type) 
--- results are
        pointer to instance of type T (not function type) 

converting pointer to instance of type T (not function type) 
 to pointer to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: 0: const instance of type T (not function type) 
--- results are
        const lvalue instance of type T (not function type) 

converting const lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        pointer to instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Address of:
            Variable Expression: total: instance of type T (not function type) 

                  Variable Expression: 0: const instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?=?: 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) 

to arguments
      Address of:
      Variable Expression: total: instance of type T (not function type) 

      Variable Expression: 0: const instance of type T (not function type) 

(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    Variable Expression: ?=?: 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) 

  to arguments
          Address of:
        Variable Expression: total: instance of type T (not function type) 

          Variable Expression: 0: const instance of type T (not function type) 


to:
  nothing
(types:
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type w3 (not function type) 
    _src: instance of type w3 (not function type) 
  returning 
    instance of type w3 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type w3 (not function type) 

    to:
      pointer to instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 

    Cast of:
      Variable Expression: _src: instance of type w3 (not function type) 

    to:
      instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 




newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


decl is ?=?: 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) 

newExpr is Variable Expression: ?=?: 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) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type w3 (not function type) 
          _src: instance of type w3 (not function type) 
        returning 
          instance of type w3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: 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) 

(types:
    lvalue 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) 

)
Environment: 

there are 12 alternatives before elimination
there are 12 alternatives after elimination
nameExpr is i
decl is i: signed int 
newExpr is Variable Expression: i: signed int 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: i: signed int 
(types:
    lvalue signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: i: signed int 
(types:
    pointer to signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: i: signed int 
(types:
    pointer to signed int 
)
Environment: 

nameExpr is 0
decl is 0: const instance of type T (not function type) 
newExpr is Variable Expression: 0: const instance of type T (not function type) 

decl is 0: const instance of type T1 (not function type) 
newExpr is Variable Expression: 0: const instance of type T1 (not function type) 

decl is 0: const instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 


decl is 0: const instance of type T3 (not function type) 
newExpr is Variable Expression: 0: const instance of type T3 (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

there are 4 alternatives before elimination
there are 4 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to signed int 
              signed int 
            returning 
              signed int 

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to signed int 
formal type is signed int 
actual type is const lvalue instance of type T3 (not function type) 
formal type is pointer to signed int 
actual type is pointer to signed int 
formal type is signed int 
actual type is const lvalue instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

formal type is pointer to signed int 
actual type is pointer to signed int 
formal type is signed int 
actual type is const lvalue instance of type T1 (not function type) 
formal type is pointer to signed int 
actual type is pointer to signed int 
formal type is signed int 
actual type is const lvalue instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to float 
              float 
            returning 
              float 

(types:
            pointer to function
                with parameters
                  pointer to float 
                  float 
                returning 
                  float 

)
        Environment: 
formal type is pointer to float 
actual type is pointer to signed int 
formal type is pointer to float 
actual type is pointer to signed int 
formal type is pointer to float 
actual type is pointer to signed int 
formal type is pointer to float 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to char 
              char 
            returning 
              char 

(types:
            pointer to function
                with parameters
                  pointer to char 
                  char 
                returning 
                  char 

)
        Environment: 
formal type is pointer to char 
actual type is pointer to signed int 
formal type is pointer to char 
actual type is pointer to signed int 
formal type is pointer to char 
actual type is pointer to signed int 
formal type is pointer to char 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to signed int 
              pointer to signed int 
            returning 
              pointer to signed int 

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

)
        Environment: 
formal type is pointer to pointer to signed int 
actual type is pointer to signed int 
formal type is pointer to pointer to signed int 
actual type is pointer to signed int 
formal type is pointer to pointer to signed int 
actual type is pointer to signed int 
formal type is pointer to pointer to signed int 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to float 
              pointer to float 
            returning 
              pointer to float 

(types:
            pointer to function
                with parameters
                  pointer to pointer to float 
                  pointer to float 
                returning 
                  pointer to float 

)
        Environment: 
formal type is pointer to pointer to float 
actual type is pointer to signed int 
formal type is pointer to pointer to float 
actual type is pointer to signed int 
formal type is pointer to pointer to float 
actual type is pointer to signed int 
formal type is pointer to pointer to float 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              pointer to pointer to function
                  returning 
                    nothing 

              pointer to function
                  returning 
                    nothing 

            returning 
              pointer to function
                  returning 
                    nothing 


(types:
            pointer to function
                with parameters
                  pointer to pointer to function
                      returning 
                        nothing 

                  pointer to function
                      returning 
                        nothing 

                returning 
                  pointer to function
                      returning 
                        nothing 


)
        Environment: 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to signed int 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to signed int 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to signed int 
formal type is pointer to pointer to function
  returning 
    nothing 

actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type w3 (not function type) 
              _src: instance of type w3 (not function type) 
            returning 
              instance of type w3 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type w3 (not function type) 
                  _src: instance of type w3 (not function type) 
                returning 
                  instance of type w3 (not function type) 

)
        Environment: 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type w3 (not function type) 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T3 (not function type) 
              _src: instance of type T3 (not function type) 
            returning 
              instance of type T3 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T3 (not function type) 
                  _src: instance of type T3 (not function type) 
                returning 
                  instance of type T3 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T3 (not function type) 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T2 (not function type) 
              _src: instance of type T2 (not function type) 
            returning 
              instance of type T2 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T2 (not function type) 
                  _src: instance of type T2 (not function type) 
                returning 
                  instance of type T2 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T2 (not function type) 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type T1 (not function type) 
              _src: instance of type T1 (not function type) 
            returning 
              instance of type T1 (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T1 (not function type) 
                  _src: instance of type T1 (not function type) 
                returning 
                  instance of type T1 (not function type) 

)
        Environment: 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T1 (not function type) 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: inline static function
            with parameters
              _dst: pointer to instance of struct __anonymous0 
              _src: instance of struct __anonymous0 
            returning 
              instance of struct __anonymous0 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of struct __anonymous0 
                  _src: instance of struct __anonymous0 
                returning 
                  instance of struct __anonymous0 

)
        Environment: 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to signed int 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to signed int 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to signed int 
formal type is pointer to instance of struct __anonymous0 
actual type is pointer to signed int 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: 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) 

(types:
            lvalue 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) 

)
        Environment: 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to signed int 
formal type is pointer to instance of type T (not function type) 
actual type is pointer to signed int 
nameExpr is total
decl is total: instance of type T (not function type) with initializer 
Simple Initializer:   Cast of:
    Variable Expression: 0: const instance of type T (not function type) 

  to:
    instance of type T (not function type) 
  with environment:
    Types:
    Non-types:

newExpr is Variable Expression: total: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: total: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
  Variable Expression: total: instance of type T (not function type) 

to:
  instance of type T (not function type) 
(types:
    instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?+?
decl is ?+?: function
  with parameters
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?+?: function
    with parameters
      instance of type T1 (not function type) 
      instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?+?: function
  with parameters
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


newExpr is Variable Expression: ?+?: function
    with parameters
      instance of type T2 (not function type) 
        with parameters
          instance of type P1 (not function type) 
          instance of type P2 (not function type) 

      instance of type T2 (not function type) 
        with parameters
          instance of type P1 (not function type) 
          instance of type P2 (not function type) 

    returning 
      instance of type T2 (not function type) 
        with parameters
          instance of type P1 (not function type) 
          instance of type P2 (not function type) 



decl is ?+?: function
  with parameters
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?+?: function
    with parameters
      instance of type T3 (not function type) 
      instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?+?: pointer to function
  with parameters
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

newExpr is Variable Expression: ?+?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
    with parameters
      instance of type T1 (not function type) 
      instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          instance of type T1 (not function type) 
          instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
    with parameters
      instance of type T2 (not function type) 
        with parameters
          instance of type P1 (not function type) 
          instance of type P2 (not function type) 

      instance of type T2 (not function type) 
        with parameters
          instance of type P1 (not function type) 
          instance of type P2 (not function type) 

    returning 
      instance of type T2 (not function type) 
        with parameters
          instance of type P1 (not function type) 
          instance of type P2 (not function type) 


(types:
    pointer to function
        with parameters
          instance of type T2 (not function type) 
            with parameters
              instance of type P1 (not function type) 
              instance of type P2 (not function type) 

          instance of type T2 (not function type) 
            with parameters
              instance of type P1 (not function type) 
              instance of type P2 (not function type) 

        returning 
          instance of type T2 (not function type) 
            with parameters
              instance of type P1 (not function type) 
              instance of type P2 (not function type) 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?+?: function
    with parameters
      instance of type T3 (not function type) 
      instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          instance of type T3 (not function type) 
          instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?+?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    lvalue pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

)
Environment: 

there are 4 alternatives before elimination
there are 4 alternatives after elimination
nameExpr is t
decl is t: instance of type T (not function type) 
newExpr is Variable Expression: t: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

nameExpr is t
decl is t: instance of type T (not function type) 
newExpr is Variable Expression: t: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: t: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
            with parameters
              instance of type T3 (not function type) 
              instance of type T3 (not function type) 
            returning 
              instance of type T3 (not function type) 

(types:
            pointer to function
                with parameters
                  instance of type T3 (not function type) 
                  instance of type T3 (not function type) 
                returning 
                  instance of type T3 (not function type) 

)
        Environment: 
formal type is instance of type T3 (not function type) 
actual type is lvalue instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
            with parameters
              instance of type T2 (not function type) 
                with parameters
                  instance of type P1 (not function type) 
                  instance of type P2 (not function type) 

              instance of type T2 (not function type) 
                with parameters
                  instance of type P1 (not function type) 
                  instance of type P2 (not function type) 

            returning 
              instance of type T2 (not function type) 
                with parameters
                  instance of type P1 (not function type) 
                  instance of type P2 (not function type) 


(types:
            pointer to function
                with parameters
                  instance of type T2 (not function type) 
                    with parameters
                      instance of type P1 (not function type) 
                      instance of type P2 (not function type) 

                  instance of type T2 (not function type) 
                    with parameters
                      instance of type P1 (not function type) 
                      instance of type P2 (not function type) 

                returning 
                  instance of type T2 (not function type) 
                    with parameters
                      instance of type P1 (not function type) 
                      instance of type P2 (not function type) 


)
        Environment: 
formal type is instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

actual type is lvalue instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: function
            with parameters
              instance of type T1 (not function type) 
              instance of type T1 (not function type) 
            returning 
              instance of type T1 (not function type) 

(types:
            pointer to function
                with parameters
                  instance of type T1 (not function type) 
                  instance of type T1 (not function type) 
                returning 
                  instance of type T1 (not function type) 

)
        Environment: 
formal type is instance of type T1 (not function type) 
actual type is lvalue instance of type T (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?+?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            lvalue pointer to function
                with parameters
                  instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

)
        Environment: 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Variable Expression: t: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: t: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Variable Expression: t: instance of type T (not function type) 

                  Variable Expression: t: instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?+?: pointer to function
      with parameters
        instance of type T (not function type) 
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
      Variable Expression: t: instance of type T (not function type) 

      Variable Expression: t: instance of type T (not function type) 

(types:
    instance of type T (not function type) 
)
Environment: 

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: ?+?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
(types:
    instance of type T (not function type) 
)
Environment: 

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

newExpr is Variable Expression: ?!=?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      signed int 


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

(types:
    lvalue pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          signed int 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is ?<?
decl is ?<?: pointer to function
  with parameters
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    signed int 

newExpr is Variable Expression: ?<?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      signed int 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?<?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      signed int 

(types:
    lvalue pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          signed int 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is t1
decl is t1: instance of type T (not function type) 
newExpr is Variable Expression: t1: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: t1: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: t1: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

nameExpr is t2
decl is t2: instance of type T (not function type) 
newExpr is Variable Expression: t2: instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: t2: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: t2: instance of type T (not function type) 
(types:
    lvalue instance of type T (not function type) 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?<?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              signed int 

(types:
            lvalue pointer to function
                with parameters
                  instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  signed int 

)
        Environment: 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
formal type is instance of type T (not function type) 
actual type is lvalue instance of type T (not function type) 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Variable Expression: t1: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: t2: instance of type T (not function type) 
--- results are
        lvalue instance of type T (not function type) 

converting lvalue instance of type T (not function type) 
 to instance of type T (not function type) 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        instance of type T (not function type) 
        instance of type T (not function type) 
actuals are:
                  Variable Expression: t1: instance of type T (not function type) 

                  Variable Expression: t2: instance of type T (not function type) 

bindings are:
cost of conversion is:( 0, 0, 0 )
alternatives before prune:
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?<?: pointer to function
      with parameters
        instance of type T (not function type) 
        instance of type T (not function type) 
      returning 
        signed int 

to arguments
      Variable Expression: t1: instance of type T (not function type) 

      Variable Expression: t2: instance of type T (not function type) 

(types:
    signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Application of
  Variable Expression: ?<?: pointer to function
      with parameters
        instance of type T (not function type) 
        instance of type T (not function type) 
      returning 
        signed int 

to arguments
      Variable Expression: t1: instance of type T (not function type) 

      Variable Expression: t2: instance of type T (not function type) 

(types:
    signed int 
)
Environment: 

nameExpr is 0
decl is 0: const instance of type T (not function type) 
newExpr is Variable Expression: 0: const instance of type T (not function type) 

decl is 0: const instance of type T1 (not function type) 
newExpr is Variable Expression: 0: const instance of type T1 (not function type) 

decl is 0: const instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

newExpr is Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 


decl is 0: const instance of type T3 (not function type) 
newExpr is Variable Expression: 0: const instance of type T3 (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

there are 4 alternatives before elimination
there are 4 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T3 (not function type) 
(types:
    const lvalue instance of type T3 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T2 (not function type) 
  with parameters
    instance of type P1 (not function type) 
    instance of type P2 (not function type) 

(types:
    const lvalue instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T1 (not function type) 
(types:
    const lvalue instance of type T1 (not function type) 
)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: 0: const instance of type T (not function type) 
(types:
    const lvalue instance of type T (not function type) 
)
Environment: 

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

(types:
            lvalue pointer to function
                with parameters
                  instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  signed int 

)
        Environment: 
formal type is instance of type T (not function type) 
actual type is signed int 
formal type is instance of type T (not function type) 
actual type is signed int 
formal type is instance of type T (not function type) 
actual type is signed int 
formal type is instance of type T (not function type) 
actual type is signed int 
nameExpr is 1
alternatives before prune:
Cost ( 0, 0, 0 ): constant expression 2 signed int (types:
    signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Cast of:
constant expression 2 signed int 
to:
  signed int 
(types:
    signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
    signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 2 ): Cast of:
constant expression 10 signed int 
to:
  long unsigned int 
(types:
    long unsigned int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is swap
decl is swap: 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
    left: instance of type T (not function type) 
    right: instance of type T (not function type) 
  returning 
    nothing 
  with body 
    CompoundStmt
      Declaration of temp: instance of type T (not function type) with initializer 
        Simple Initializer:           Cast of:
            Variable Expression: left: instance of type T (not function type) 

          to:
            instance of type T (not function type) 
          with environment:
            Types:
            Non-types:

              Expression Statement:
          Application of
            Variable Expression: ?=?: 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) 

          to arguments
                          Address of:
                Variable Expression: temp: instance of type T (not function type) 

                          Variable Expression: left: instance of type T (not function type) 

          with environment:
            Types:
            Non-types:

              Expression Statement:
          Application of
            Variable Expression: ?=?: 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) 

          to arguments
                          Address of:
                Variable Expression: left: instance of type T (not function type) 

                          Variable Expression: right: instance of type T (not function type) 

          with environment:
            Types:
            Non-types:

              Expression Statement:
          Application of
            Variable Expression: ?=?: 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) 

          to arguments
                          Address of:
                Variable Expression: right: instance of type T (not function type) 

                          Variable Expression: temp: instance of type T (not function type) 

          with environment:
            Types:
            Non-types:


newExpr is Variable Expression: swap: 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
      left: instance of type T (not function type) 
      right: instance of type T (not function type) 
    returning 
      nothing 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: swap: 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
      left: instance of type T (not function type) 
      right: instance of type T (not function type) 
    returning 
      nothing 

(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
          left: instance of type _0_T (not function type) 
          right: instance of type _0_T (not function type) 
        returning 
          nothing 

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is x
nameExpr is twice
decl is twice: 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) 

        0: const instance of type T (not function type) 
        ?+?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?++: pointer to function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?+=?: pointer to function
            with parameters
              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
    t: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Cast of:
  Application of
    Variable Expression: ?+?: pointer to function
        with parameters
          instance of type T (not function type) 
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
          Variable Expression: t: instance of type T (not function type) 

          Variable Expression: t: instance of type T (not function type) 


to:
  instance of type T (not function type) 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: twice: 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) 

          0: const instance of type T (not function type) 
          ?+?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?++: pointer to function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?+=?: pointer to function
              with parameters
                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
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: twice: 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) 

          0: const instance of type T (not function type) 
          ?+?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?++: pointer to function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?+=?: pointer to function
              with parameters
                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
      t: 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) 

              0: const instance of type _0_T (not function type) 
              ?+?: pointer to function
                  with parameters
                    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) 

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

              ?+=?: pointer to function
                  with parameters
                    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
          t: 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 x
nameExpr is ?=?
decl is ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 


decl is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type w3 (not function type) 
    _src: instance of type w3 (not function type) 
  returning 
    instance of type w3 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type w3 (not function type) 

    to:
      pointer to instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 

    Cast of:
      Variable Expression: _src: instance of type w3 (not function type) 

    to:
      instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 




newExpr is Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 


decl is ?=?: function
  with parameters
    pointer to pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 



decl is ?=?: function
  with parameters
    pointer to pointer to float 
    pointer to float 
  returning 
    pointer to float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 


decl is ?=?: function
  with parameters
    pointer to char 
    char 
  returning 
    char 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 


decl is ?=?: function
  with parameters
    pointer to float 
    float 
  returning 
    float 

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 


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

newExpr is Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 


decl is ?=?: 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) 

newExpr is Variable Expression: ?=?: 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) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?=?: inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of struct __anonymous0 
          _src: instance of struct __anonymous0 
        returning 
          instance of struct __anonymous0 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T1 (not function type) 
          _src: instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T2 (not function type) 
          _src: instance of type T2 (not function type) 
        returning 
          instance of type T2 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type T3 (not function type) 
          _src: instance of type T3 (not function type) 
        returning 
          instance of type T3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 

(types:
    pointer to function
        with parameters
          _dst: pointer to instance of type w3 (not function type) 
          _src: instance of type w3 (not function type) 
        returning 
          instance of type w3 (not function type) 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


(types:
    pointer to function
        with parameters
          pointer to pointer to function
              returning 
                nothing 

          pointer to function
              returning 
                nothing 

        returning 
          pointer to function
              returning 
                nothing 


)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

(types:
    pointer to function
        with parameters
          pointer to pointer to float 
          pointer to float 
        returning 
          pointer to float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

(types:
    pointer to function
        with parameters
          pointer to char 
          char 
        returning 
          char 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

(types:
    pointer to function
        with parameters
          pointer to float 
          float 
        returning 
          float 

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

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

)
Environment: 

Cost ( 0, 0, 0 ): Variable Expression: ?=?: 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) 

(types:
    lvalue 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) 

)
Environment: 

there are 12 alternatives before elimination
there are 12 alternatives after elimination
nameExpr is f
decl is f: float 
newExpr is Variable Expression: f: float 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: f: float 
(types:
    lvalue float 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: f: float 
(types:
    pointer to float 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Address of:
  Variable Expression: f: float 
(types:
    pointer to float 
)
Environment: 

nameExpr is min
decl is min: 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) 

        0: const instance of type T (not function type) 
        ?!=?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              signed int 

        ?<?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              signed int 


  function
  with parameters
    t1: instance of type T (not function type) 
    t2: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Conditional expression on: 
  Cast of:
    Applying untyped: 
        Name: ?!=?
    ...to: 
        Applying untyped: 
            Name: ?<?
        ...to: 
            Name: t1
            Name: t2
        Name: 0

  to:
    signed int 
First alternative:
  Name: t1
Second alternative:
  Name: t2




newExpr is Variable Expression: min: 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) 

          0: const instance of type T (not function type) 
          ?!=?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                signed int 

          ?<?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                signed int 


    function
    with parameters
      t1: instance of type T (not function type) 
      t2: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: min: 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) 

          0: const instance of type T (not function type) 
          ?!=?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                signed int 

          ?<?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                signed int 


    function
    with parameters
      t1: instance of type T (not function type) 
      t2: 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) 

              0: const instance of type _0_T (not function type) 
              ?!=?: pointer to function
                  with parameters
                    instance of type _0_T (not function type) 
                    instance of type _0_T (not function type) 
                  returning 
                    signed int 

              ?<?: pointer to function
                  with parameters
                    instance of type _0_T (not function type) 
                    instance of type _0_T (not function type) 
                  returning 
                    signed int 


        function
        with parameters
          t1: instance of type _0_T (not function type) 
          t2: 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
alternatives before prune:
Cost ( 0, 0, 0 ): constant expression 4.0 double (types:
    double 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): constant expression 4.0 double (types:
    double 
)
Environment: 

alternatives before prune:
Cost ( 0, 0, 0 ): constant expression 3.0 double (types:
    double 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): constant expression 3.0 double (types:
    double 
)
Environment: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: min: 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) 

                  0: const instance of type T (not function type) 
                  ?!=?: pointer to function
                      with parameters
                        instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        signed int 

                  ?<?: pointer to function
                      with parameters
                        instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        signed int 


            function
            with parameters
              t1: instance of type T (not function type) 
              t2: 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) 

                      0: const instance of type _0_T (not function type) 
                      ?!=?: pointer to function
                          with parameters
                            instance of type _0_T (not function type) 
                            instance of type _0_T (not function type) 
                          returning 
                            signed int 

                      ?<?: pointer to function
                          with parameters
                            instance of type _0_T (not function type) 
                            instance of type _0_T (not function type) 
                          returning 
                            signed int 


                function
                with parameters
                  t1: instance of type _0_T (not function type) 
                  t2: 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 double 
formal type is instance of type _0_T (not function type) 
actual type is double 
need assertions:
?!=?: pointer to function
          with parameters
            instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            signed int 
(used)?=?: 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)0: const instance of type _0_T (not function type) (used)?<?: pointer to function
          with parameters
            instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            signed int 
(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
    instance of type _0_T (not function type) 
    instance of type _0_T (not function type) 
  returning 
    signed int 

inferRecursive: candidate is ?!=?: pointer to function
  with parameters
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    signed int 

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

nameExpr is sum
decl is sum: 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) 

        0: const instance of type T (not function type) 
        ?+?: pointer to function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?++: pointer to function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        ?+=?: pointer to function
            with parameters
              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
    n: signed int 
    a: pointer to instance of type T (not function type) 
  returning 
    instance of type T (not function type) 
  with body 
    CompoundStmt
      Declaration of total: instance of type T (not function type) with initializer 
        Simple Initializer:           Cast of:
            Variable Expression: 0: const instance of type T (not function type) 

          to:
            instance of type T (not function type) 
          with environment:
            Types:
            Non-types:

              Expression Statement:
          Application of
            Variable Expression: ?=?: 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) 

          to arguments
                          Address of:
                Variable Expression: total: instance of type T (not function type) 

                          Variable Expression: 0: const instance of type T (not function type) 

          with environment:
            Types:
            Non-types:

      Declaration of i: signed int 
              Labels: {}
        For Statement
          initialization: 
            Expression Statement:
              Applying untyped: 
                  Name: ?=?
              ...to: 
                  Address of:
                    Name: i
                  Name: 0

          condition: 
            Cast of:
              Applying untyped: 
                  Name: ?!=?
              ...to: 
                  Applying untyped: 
                      Name: ?<?
                  ...to: 
                      Name: i
                      Name: n
                  Name: 0

            to:
              signed int 

          increment: 
            Applying untyped: 
                Name: ?+=?
            ...to: 
                Address of:
                  Name: i
                Name: 1

          statement block: 
            CompoundStmt
                              Expression Statement:
                  Applying untyped: 
                      Name: ?=?
                  ...to: 
                      Address of:
                        Name: total
                      Applying untyped: 
                          Name: ?+?
                      ...to: 
                          Name: total
                          Applying untyped: 
                              Name: ?[?]
                          ...to: 
                              Name: a
                              Name: i



              Return Statement, returning: Cast of:
  Variable Expression: total: instance of type T (not function type) 

to:
  instance of type T (not function type) 
with environment:
  Types:
  Non-types:



newExpr is Variable Expression: sum: 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) 

          0: const instance of type T (not function type) 
          ?+?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?++: pointer to function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?+=?: pointer to function
              with parameters
                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
      n: signed int 
      a: pointer to instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: sum: 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) 

          0: const instance of type T (not function type) 
          ?+?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?++: pointer to function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?+=?: pointer to function
              with parameters
                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
      n: signed int 
      a: pointer to 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) 

              0: const instance of type _0_T (not function type) 
              ?+?: pointer to function
                  with parameters
                    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) 

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

              ?+=?: pointer to function
                  with parameters
                    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
          n: signed int 
          a: pointer to 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
alternatives before prune:
Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
    signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): constant expression 10 signed int (types:
    signed int 
)
Environment: 

nameExpr is a
decl is a: array of signed int with dimension of Cast of:
constant expression 10 signed int 
to:
  long unsigned int 
with environment:
  Types:
  Non-types:

newExpr is Variable Expression: a: array of signed int with dimension of   Cast of:
constant expression 10 signed int 
  to:
    long unsigned int 
  with environment:
    Types:
    Non-types:


decl is a: pointer to instance of type T (not function type) 
newExpr is Variable Expression: a: pointer to instance of type T (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: a: array of signed int with dimension of   Cast of:
constant expression 10 signed int 
  to:
    long unsigned int 
  with environment:
    Types:
    Non-types:

(types:
    lvalue pointer to signed int 
)
Environment: 

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

there are 2 alternatives before elimination
there are 2 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: a: array of signed int with dimension of   Cast of:
constant expression 10 signed int 
  to:
    long unsigned int 
  with environment:
    Types:
    Non-types:

(types:
    lvalue pointer to signed int 
)
Environment: 

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

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: sum: 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) 

                  0: const instance of type T (not function type) 
                  ?+?: pointer to function
                      with parameters
                        instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 

                  ?++: pointer to function
                      with parameters
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 

                  ?+=?: pointer to function
                      with parameters
                        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
              n: signed int 
              a: pointer to 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) 

                      0: const instance of type _0_T (not function type) 
                      ?+?: pointer to function
                          with parameters
                            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) 

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

                      ?+=?: pointer to function
                          with parameters
                            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
                  n: signed int 
                  a: pointer to instance of type _0_T (not function type) 
                returning 
                  instance of type _0_T (not function type) 

)
        Environment: 
formal type is signed int 
actual type is signed int 
formal type is pointer to instance of type _0_T (not function type) 
actual type is lvalue pointer to signed int 
need assertions:
?+?: pointer to function
          with parameters
            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)?=?: 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)?+=?: pointer to function
          with parameters
            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)0: const instance of type _0_T (not function type) (used)?++: pointer to function
          with parameters
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_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
    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 ?+?: function
  with parameters
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

unifying pointer to function
  with parameters
    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
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

inferRecursive: candidate is ?+?: function
  with parameters
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


unifying pointer to function
  with parameters
    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
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


inferRecursive: candidate is ?+?: function
  with parameters
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

unifying pointer to function
  with parameters
    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
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

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

unifying pointer to function
  with parameters
    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
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

formal type is signed int 
actual type is signed int 
formal type is pointer to instance of type _0_T (not function type) 
actual type is lvalue pointer to instance of type T (not function type) 
need assertions:
?+?: pointer to function
          with parameters
            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)?=?: 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)?+=?: pointer to function
          with parameters
            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)0: const instance of type _0_T (not function type) (used)?++: pointer to function
          with parameters
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_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
    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 ?+?: function
  with parameters
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

unifying pointer to function
  with parameters
    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
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

inferRecursive: candidate is ?+?: function
  with parameters
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


unifying pointer to function
  with parameters
    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
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


inferRecursive: candidate is ?+?: function
  with parameters
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

unifying pointer to function
  with parameters
    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
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

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

unifying pointer to function
  with parameters
    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
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

success!
satisfying assertion 160 ?+?: pointer to function
  with parameters
    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 160 ?+?: pointer to function
  with parameters
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

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 ?=?: automatically generated inline static function
  with parameters
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 
  with body 
    CompoundStmt
              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                i: instance of type P1 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Expression Statement:
          Applying untyped: 
              Name: ?=?
          ...to: 
              Address of:
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Applying untyped: 
                      Name: *?
                  ...to: 
                      Variable Expression: _dst: pointer to instance of struct __anonymous0 
              Member Expression, with field: 
                j: instance of type P2 (not function type) 
              from aggregate: 
                Variable Expression: _src: instance of struct __anonymous0 

              Return Statement, returning: Cast of:
  Variable Expression: _src: instance of struct __anonymous0 

to:
  instance of struct __anonymous0 
with environment:
  Types:
  Non-types:



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
    _dst: pointer to instance of struct __anonymous0 
    _src: instance of struct __anonymous0 
  returning 
    instance of struct __anonymous0 

inferRecursive: candidate is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (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 function
  with parameters
    _dst: pointer to instance of type T1 (not function type) 
    _src: instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

inferRecursive: candidate is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



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
    _dst: pointer to instance of type T2 (not function type) 
    _src: instance of type T2 (not function type) 
  returning 
    instance of type T2 (not function type) 

inferRecursive: candidate is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (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 function
  with parameters
    _dst: pointer to instance of type T3 (not function type) 
    _src: instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

inferRecursive: candidate is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type w3 (not function type) 
    _src: instance of type w3 (not function type) 
  returning 
    instance of type w3 (not function type) 
  with body 
    CompoundStmt
              Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type w3 (not function type) 

    to:
      pointer to instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 

    Cast of:
      Variable Expression: _src: instance of type w3 (not function type) 

    to:
      instance of type T2 (not function type) 
        with parameters
          signed int 
          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
    _dst: pointer to instance of type w3 (not function type) 
    _src: instance of type w3 (not function type) 
  returning 
    instance of type w3 (not function type) 

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

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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 pointer to function
        returning 
          nothing 

    pointer to function
        returning 
          nothing 

  returning 
    pointer to function
        returning 
          nothing 


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

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 pointer to float 
    pointer to float 
  returning 
    pointer to float 

inferRecursive: candidate is ?=?: function
  with parameters
    pointer to pointer to signed int 
    pointer to signed int 
  returning 
    pointer to 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 pointer to signed int 
    pointer to signed int 
  returning 
    pointer to signed int 

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

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 char 
    char 
  returning 
    char 

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

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 float 
    float 
  returning 
    float 

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 

inferRecursive: candidate is ?=?: 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) 

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 instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

success!
satisfying assertion 155 ?=?: 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 196 ?=?: 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) 

inferRecursive: assertion is ?+=?: pointer to function
  with parameters
    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 ?+=?: function
  with parameters
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

unifying pointer to function
  with parameters
    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
    instance of type T1 (not function type) 
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

inferRecursive: candidate is ?+=?: function
  with parameters
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


unifying pointer to function
  with parameters
    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
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


inferRecursive: candidate is ?+=?: function
  with parameters
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

unifying pointer to function
  with parameters
    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
    instance of type T3 (not function type) 
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

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

unifying pointer to function
  with parameters
    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
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

success!
satisfying assertion 167 ?+=?: pointer to function
  with parameters
    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 167 ?+=?: pointer to function
  with parameters
    instance of type T (not function type) 
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

inferRecursive: assertion is 0: const instance of type _0_T (not function type) 
inferRecursive: candidate is 0: const instance of type T (not function type) 
unifying const instance of type _0_T (not function type)  with const instance of type T (not function type) 
success!
satisfying assertion 156 0: const instance of type _0_T (not function type)  with declaration 197 0: const instance of type T (not function type) 
inferRecursive: assertion is ?++: pointer to function
  with parameters
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 

inferRecursive: candidate is ?++: function
  with parameters
    instance of type T1 (not function type) 
  returning 
    instance of type T1 (not function type) 

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

inferRecursive: candidate is ?++: function
  with parameters
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


unifying pointer to function
  with parameters
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with pointer to function
  with parameters
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 

  returning 
    instance of type T2 (not function type) 
      with parameters
        instance of type P1 (not function type) 
        instance of type P2 (not function type) 


inferRecursive: candidate is ?++: function
  with parameters
    instance of type T3 (not function type) 
  returning 
    instance of type T3 (not function type) 

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

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

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

success!
satisfying assertion 163 ?++: pointer to function
  with parameters
    instance of type _0_T (not function type) 
  returning 
    instance of type _0_T (not function type) 
 with declaration 163 ?++: pointer to function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

inferRecursive: candidate is 0: const instance of type T1 (not function type) 
unifying const instance of type _0_T (not function type)  with const instance of type T1 (not function type) 
inferRecursive: candidate is 0: const instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

unifying const instance of type _0_T (not function type)  with const instance of type T2 (not function type) 
with parameters
  instance of type P1 (not function type) 
  instance of type P2 (not function type) 

inferRecursive: candidate is 0: const instance of type T3 (not function type) 
unifying const instance of type _0_T (not function type)  with const instance of type T3 (not function type) 
actual expression:
constant expression 10 signed int --- results are
        signed int 

converting signed int 
 to signed int 
cost is( 0, 0, 0 )
actual expression:
        Variable Expression: a: pointer to instance of type T (not function type) 
--- results are
        lvalue pointer to instance of type T (not function type) 

converting lvalue pointer to instance of type T (not function type) 
 to pointer to instance of type _0_T (not function type) 
cost is( 0, 0, 0 )

converting 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) 

 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 )

converting const instance of type T (not function type) 
 to const instance of type _0_T (not function type) 
cost of conversion is ( 0, 0, 0 )

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

 to pointer to function
          with parameters
            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 )

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

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

cost of conversion is ( 0, 0, 0 )

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

 to pointer to function
          with parameters
            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:
        n: signed int 
        a: pointer to instance of type _0_T (not function type) 
actuals are:
        constant expression 10 signed int 
                  Variable Expression: a: pointer to instance of type T (not function type) 

bindings are:
        ( _0_T ) -> instance of type T (not function type)  (no widening)
cost of conversion is:( 0, 13, 0 )
alternatives before prune:
Cost ( 0, 13, 0 ): Application of
  Variable Expression: sum: 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) 

            0: const instance of type T (not function type) 
            ?+?: pointer to function
                with parameters
                  instance of type T (not function type) 
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

            ?++: pointer to function
                with parameters
                  instance of type T (not function type) 
                returning 
                  instance of type T (not function type) 

            ?+=?: pointer to function
                with parameters
                  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
        n: signed int 
        a: pointer to instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

to arguments
  constant expression 10 signed int 
      Variable Expression: a: pointer to instance of type T (not function type) 

with inferred parameters:
  ?=?: 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) 

  0: const instance of type T (not function type) 
  ?+?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

  ?++: pointer to function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

  ?+=?: pointer to function
    with parameters
      instance of type T (not function type) 
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    instance of type _0_T (not function type) 
)
Environment:   ( _0_T ) -> instance of type T (not function type)  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 1 ): Cast of:
  Application of
    Variable Expression: sum: 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) 

              0: const instance of type T (not function type) 
              ?+?: pointer to function
                  with parameters
                    instance of type T (not function type) 
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 

              ?++: pointer to function
                  with parameters
                    instance of type T (not function type) 
                  returning 
                    instance of type T (not function type) 

              ?+=?: pointer to function
                  with parameters
                    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
          n: signed int 
          a: pointer to instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

  to arguments
    constant expression 10 signed int 
          Variable Expression: a: pointer to instance of type T (not function type) 

  with inferred parameters:
    ?=?: 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) 

    0: const instance of type T (not function type) 
    ?+?: pointer to function
      with parameters
        instance of type T (not function type) 
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

    ?++: pointer to function
      with parameters
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 

    ?+=?: pointer to function
      with parameters
        instance of type T (not function type) 
        instance of type T (not function type) 
      returning 
        instance of type T (not function type) 


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


there are 1 alternatives before elimination
there are 1 alternatives after elimination
Error: No reasonable alternatives for expression Applying untyped: 
    Name: ?=?
...to: 
    Address of:
      Member Expression, with field: 
        i: instance of type P1 (not function type) 
      from aggregate: 
        Applying untyped: 
            Name: *?
        ...to: 
            Variable Expression: _dst: pointer to instance of struct __anonymous0 
    Member Expression, with field: 
      i: instance of type P1 (not function type) 
    from aggregate: 
      Variable Expression: _src: instance of struct __anonymous0 

Error: No reasonable alternatives for expression Applying untyped: 
    Name: ?=?
...to: 
    Address of:
      Member Expression, with field: 
        j: instance of type P2 (not function type) 
      from aggregate: 
        Applying untyped: 
            Name: *?
        ...to: 
            Variable Expression: _dst: pointer to instance of struct __anonymous0 
    Member Expression, with field: 
      j: instance of type P2 (not function type) 
    from aggregate: 
      Variable Expression: _src: instance of struct __anonymous0 

Error: No reasonable alternatives for expression Cast of:
  Variable Expression: _dst: pointer to instance of type T2 (not function type) 

to:
  pointer to instance of struct __anonymous0 

Error: No reasonable alternatives for expression Cast of:
  Variable Expression: _dst: pointer to instance of type w3 (not function type) 

to:
  pointer to instance of type T2 (not function type) 
    with parameters
      signed int 
      signed int 


Error: No reasonable alternatives for expression Applying untyped: 
    Name: ?=?
...to: 
    Address of:
      Name: i
    Name: 0

Error: No reasonable alternatives for expression Applying untyped: 
    Name: ?!=?
...to: 
    Applying untyped: 
        Name: ?<?
    ...to: 
        Name: t1
        Name: t2
    Name: 0

Error: No reasonable alternatives for expression Name: 1

Error: No reasonable alternatives for expression Name: x

Error: No reasonable alternatives for expression Name: x

Error: No reasonable alternatives for expression Applying untyped: 
    Name: min
...to: 
constant expression 4.0 double constant expression 3.0 double 
