nameExpr is x
decl is x: function
  with parameters
    instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

newExpr is Variable Expression: x: function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: x: function
    with parameters
      instance of type T (not function type) 
    returning 
      instance of type T (not function type) 

(types:
    pointer to function
        with parameters
          instance of type T (not function type) 
        returning 
          instance of type T (not function type) 

)
Environment: 

there are 1 alternatives before elimination
there are 1 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: 

working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: x: function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to function
                with parameters
                  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) 
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 )
Case +++++++++++++
formals are:
        instance of type T (not function type) 
actuals are:
                  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: x: function
      with parameters
        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) 

(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: x: function
        with parameters
          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) 


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 ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

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


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

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


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

    to:
      pointer to pointer to signed int 
    Cast of:
      Variable Expression: _src: instance of type U (not function type) 

    to:
      pointer to signed int 



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


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: ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    pointer to forall
          _0_DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type _0_DT (not function type) 
          pointer to instance of type _0_DT (not function type) 
        returning 
          pointer to instance of type _0_DT (not function type) 

)
Environment: 

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

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

)
Environment: 

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

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

)
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 4 alternatives before elimination
there are 4 alternatives after elimination
alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: _dst: pointer to instance of type U (not function type) 
(types:
    lvalue pointer to instance of type U (not function type) 
)
Environment: 

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

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

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

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

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

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


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

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


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

    to:
      pointer to pointer to signed int 
    Cast of:
      Variable Expression: _src: instance of type U (not function type) 

    to:
      pointer to signed int 



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


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: ?=?: forall
      DT: incomplete type
    function
    with parameters
      pointer to pointer to instance of type DT (not function type) 
      pointer to instance of type DT (not function type) 
    returning 
      pointer to instance of type DT (not function type) 

(types:
    pointer to forall
          _0_DT: incomplete type
        function
        with parameters
          pointer to pointer to instance of type _0_DT (not function type) 
          pointer to instance of type _0_DT (not function type) 
        returning 
          pointer to instance of type _0_DT (not function type) 

)
Environment: 

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

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

)
Environment: 

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

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

)
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 4 alternatives before elimination
there are 4 alternatives after elimination
nameExpr is u_instance
decl is u_instance: instance of type U (not function type) with initializer 
Simple Initializer:   Cast of:
    Variable Expression: u: instance of type U (not function type) 

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

newExpr is Variable Expression: u_instance: instance of type U (not function type) 

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: u_instance: instance of type U (not function type) 
(types:
    lvalue instance of type U (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: u_instance: instance of type U (not function type) 
(types:
    pointer to instance of type U (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: u_instance: instance of type U (not function type) 
(types:
    pointer to instance of type U (not function type) 
)
Environment: 

nameExpr is u
decl is u: instance of type U (not function type) 
newExpr is Variable Expression: u: instance of type U (not function type) 

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

there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
(types:
    lvalue instance of type U (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 U (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: function
            with parameters
              _dst: pointer to instance of type U (not function type) 
              _src: instance of type U (not function type) 
            returning 
              instance of type U (not function type) 

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

)
        Environment: 
formal type is pointer to instance of type U (not function type) 
actual type is pointer to instance of type U (not function type) 
formal type is instance of type U (not function type) 
actual type is lvalue instance of type U (not function type) 
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: ?=?: function
            with parameters
              _dst: pointer to instance of type T (not function type) 
              _src: instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

(types:
            pointer to function
                with parameters
                  _dst: pointer to instance of type T (not function type) 
                  _src: 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 U (not function type) 
working on alternative: 
        Cost ( 0, 0, 0 ):         Variable Expression: ?=?: forall
              DT: incomplete type
            function
            with parameters
              pointer to pointer to instance of type DT (not function type) 
              pointer to instance of type DT (not function type) 
            returning 
              pointer to instance of type DT (not function type) 

(types:
            pointer to forall
                  _0_DT: incomplete type
                function
                with parameters
                  pointer to pointer to instance of type _0_DT (not function type) 
                  pointer to instance of type _0_DT (not function type) 
                returning 
                  pointer to instance of type _0_DT (not function type) 

)
        Environment: 
formal type is pointer to pointer to instance of type _0_DT (not function type) 
actual type is pointer to instance of type U (not function type) 
actual expression:
        Address of:
          Variable Expression: u_instance: instance of type U (not function type) 
--- results are
        pointer to instance of type U (not function type) 

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

converting lvalue instance of type U (not function type) 
 to instance of type U (not function type) 
cost is( 0, 0, 2 )
Case +++++++++++++
formals are:
        _dst: pointer to instance of type U (not function type) 
        _src: instance of type U (not function type) 
actuals are:
                  Address of:
            Variable Expression: u_instance: instance of type U (not function type) 

                  Cast of:
            Variable Expression: u: instance of type U (not function type) 

          to:
            instance of type U (not function type) 

bindings are:
cost of conversion is:( 0, 0, 2 )
alternatives before prune:
Cost ( 0, 0, 2 ): Application of
  Variable Expression: ?=?: function
      with parameters
        _dst: pointer to instance of type U (not function type) 
        _src: instance of type U (not function type) 
      returning 
        instance of type U (not function type) 

to arguments
      Address of:
      Variable Expression: u_instance: instance of type U (not function type) 

      Cast of:
      Variable Expression: u: instance of type U (not function type) 

    to:
      instance of type U (not function type) 

(types:
    instance of type U (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: ?=?: function
        with parameters
          _dst: pointer to instance of type U (not function type) 
          _src: instance of type U (not function type) 
        returning 
          instance of type U (not function type) 

  to arguments
          Address of:
        Variable Expression: u_instance: instance of type U (not function type) 

          Cast of:
        Variable Expression: u: instance of type U (not function type) 

      to:
        instance of type U (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 signed int 
  returning 
    signed int 

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


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: ?++: function
    with parameters
      pointer to signed int 
    returning 
      signed int 

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

)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
nameExpr is *?
decl is *?: 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
    pointer to instance of type T (not function type) 
  returning 
    lvalue instance of type T (not function type) 

newExpr is Variable Expression: *?: 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
      pointer to instance of type T (not function type) 
    returning 
      lvalue instance of type T (not function type) 


alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: *?: 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
      pointer to instance of type T (not function type) 
    returning 
      lvalue 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
          pointer to instance of type _0_T (not function type) 
        returning 
          lvalue instance of type _0_T (not function type) 

)
Environment: 

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

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

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

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

)
        Environment: 
formal type is pointer to instance of type _0_T (not function type) 
actual type is lvalue instance of type U (not function type) 
need assertions:
?=?: pointer to function
          with parameters
            pointer to instance of type _0_T (not function type) 
            instance of type _0_T (not function type) 
          returning 
            instance of type _0_T (not function type) 
(used)============= original indexer
===idTable===
===typeTable===
===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 ?=?: forall
    DT: incomplete type
  function
  with parameters
    pointer to pointer to instance of type DT (not function type) 
    pointer to instance of type DT (not function type) 
  returning 
    pointer to instance of type DT (not function type) 

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

inferRecursive: candidate is ?=?: automatically generated function
  with parameters
    _dst: pointer to instance of type T (not function type) 
    _src: 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
    _dst: pointer to instance of type T (not function type) 
    _src: instance of type T (not function type) 
  returning 
    instance of type T (not function type) 

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

    to:
      pointer to pointer to signed int 
    Cast of:
      Variable Expression: _src: instance of type U (not function type) 

    to:
      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
    _dst: pointer to instance of type U (not function type) 
    _src: instance of type U (not function type) 
  returning 
    instance of type U (not function type) 

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

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

success!
satisfying assertion 15 ?=?: 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 signed int 
    signed int 
  returning 
    signed int 

actual expression:
        Variable Expression: u: instance of type U (not function type) 
--- results are
        lvalue instance of type U (not function type) 

converting lvalue instance of type U (not function type) 
 to pointer to instance of type _0_T (not function type) 
cost is( 0, 0, 1 )

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:
        pointer to instance of type _0_T (not function type) 
actuals are:
                  Cast of:
            Variable Expression: u: instance of type U (not function type) 

          to:
            pointer to signed int 

bindings are:
        ( _0_T ) -> signed int  (no widening)
cost of conversion is:( 0, 4, 1 )
alternatives before prune:
Cost ( 0, 4, 1 ): Application of
  Variable Expression: *?: 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
        pointer to instance of type T (not function type) 
      returning 
        lvalue instance of type T (not function type) 

to arguments
      Cast of:
      Variable Expression: u: instance of type U (not function type) 

    to:
      pointer to signed int 

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

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


there are 1 alternatives before elimination
there are 1 alternatives after elimination
alternatives before prune:
Cost ( 0, 4, 1 ): Address of:
  Application of
    Variable Expression: *?: 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
          pointer to instance of type T (not function type) 
        returning 
          lvalue instance of type T (not function type) 

  to arguments
          Cast of:
        Variable Expression: u: instance of type U (not function type) 

      to:
        pointer to signed int 

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

(types:
    pointer to signed int 
)
Environment:   ( _0_T ) -> signed int  (no widening)


there are 1 alternatives before elimination
there are 1 alternatives after elimination
findSubExprs
Cost ( 0, 4, 1 ): Address of:
  Application of
    Variable Expression: *?: 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
          pointer to instance of type T (not function type) 
        returning 
          lvalue instance of type T (not function type) 

  to arguments
          Cast of:
        Variable Expression: u: instance of type U (not function type) 

      to:
        pointer to signed int 

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

(types:
    pointer to signed int 
)
Environment:   ( _0_T ) -> signed int  (no widening)


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

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

)
        Environment: 
formal type is pointer to signed int 
actual type is pointer to signed int 
need assertions:
============= original indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
============= new indexer
===idTable===
===typeTable===
===structTable===
===enumTable===
===unionTable===
===contextTable===
actual expression:
        Address of:
          Application of
            Variable Expression: *?: 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
                  pointer to instance of type T (not function type) 
                returning 
                  lvalue instance of type T (not function type) 

          to arguments
                          Cast of:
                Variable Expression: u: instance of type U (not function type) 

              to:
                pointer to signed int 

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

--- results are
        pointer to signed int 

converting pointer to signed int 
 to pointer to signed int 
cost is( 0, 0, 0 )
Case +++++++++++++
formals are:
        pointer to signed int 
actuals are:
                  Address of:
            Application of
              Variable Expression: *?: 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
                    pointer to instance of type T (not function type) 
                  returning 
                    lvalue instance of type T (not function type) 

            to arguments
                              Cast of:
                  Variable Expression: u: instance of type U (not function type) 

                to:
                  pointer to signed int 

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


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

to arguments
      Address of:
      Application of
        Variable Expression: *?: 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
              pointer to instance of type T (not function type) 
            returning 
              lvalue instance of type T (not function type) 

      to arguments
                  Cast of:
            Variable Expression: u: instance of type U (not function type) 

          to:
            pointer to signed int 

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


(types:
    signed int 
)
Environment:   ( _0_T ) -> signed int  (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: ?++: function
        with parameters
          pointer to signed int 
        returning 
          signed int 

  to arguments
          Address of:
        Application of
          Variable Expression: *?: 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
                pointer to instance of type T (not function type) 
              returning 
                lvalue instance of type T (not function type) 

        to arguments
                      Cast of:
              Variable Expression: u: instance of type U (not function type) 

            to:
              pointer to signed int 

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



to:
  nothing
(types:
)
Environment:   ( _0_T ) -> signed int  (no widening)


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

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

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

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

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

alternatives before prune:
Cost ( 0, 0, 0 ): Variable Expression: u: instance of type U (not function type) 
(types:
    lvalue instance of type U (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:
  Variable Expression: u: instance of type U (not function type) 

to:
  pointer to signed int 
(types:
    pointer to signed int 
)
Environment: 

there are 1 alternatives before elimination
there are 1 alternatives after elimination
Error: No reasonable alternatives for expression Cast of:
  Variable Expression: _dst: pointer to instance of type U (not function type) 

to:
  pointer to pointer to signed int 

