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