nameExpr is g decl is g: function with parameters p: pointer to forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters instance of type U (not function type) returning nothing returning nothing newExpr is Variable Expression: g: function with parameters p: pointer to forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters instance of type U (not function type) returning nothing returning nothing alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: g: function with parameters p: pointer to forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters instance of type U (not function type) returning nothing returning nothing (types: pointer to function with parameters p: pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters instance of type _0_U (not function type) returning nothing returning nothing ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is f decl is f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing newExpr is Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing (types: pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning nothing ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing (types: pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning nothing ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: g: function with parameters p: pointer to forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters instance of type U (not function type) returning nothing returning nothing (types: pointer to function with parameters p: pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters instance of type _0_U (not function type) returning nothing returning nothing ) Environment: formal type is pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters instance of type _0_U (not function type) returning nothing actual type is pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning nothing need assertions: ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to forall _2_DT: incomplete type function with parameters pointer to pointer to instance of type _2_DT (not function type) pointer to instance of type _2_DT (not function type) returning pointer to instance of type _2_DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int inferRecursive: candidate is ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) success! satisfying assertion 12 ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with declaration 18 ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) actual expression: Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing --- results are pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning nothing converting pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning nothing to pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters instance of type _0_U (not function type) returning nothing cost is( 0, 0, 0 ) converting pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) to pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: p: pointer to forall _0_U: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_U (not function type) instance of type _0_U (not function type) returning instance of type _0_U (not function type) function with parameters instance of type _0_U (not function type) returning nothing actuals are: Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing bindings are: ( _1_T ) -> instance of type _0_U (not function type) (no widening) cost of conversion is:( 0, 0, 0 ) alternatives before prune: Cost ( 0, 0, 0 ): Application of Variable Expression: g: function with parameters p: pointer to forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters instance of type U (not function type) returning nothing returning nothing to arguments Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing with inferred parameters: ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) (types: ) Environment: ( _1_T ) -> instance of type _0_U (not function type) (no widening) there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Application of Variable Expression: g: function with parameters p: pointer to forall U: type with assertions ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) function with parameters instance of type U (not function type) returning nothing returning nothing to arguments Variable Expression: f: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning nothing with inferred parameters: ?=?: pointer to function with parameters pointer to instance of type U (not function type) instance of type U (not function type) returning instance of type U (not function type) to: nothing (types: ) Environment: ( _1_T ) -> instance of type _0_U (not function type) (no widening) there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is h decl is h: function with parameters null: pointer to signed int returning nothing newExpr is Variable Expression: h: function with parameters null: pointer to signed int returning nothing alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: h: function with parameters null: pointer to signed int returning nothing (types: pointer to function with parameters null: pointer to signed int returning nothing ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is id decl is id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) newExpr is Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters instance of type _0_T (not function type) returning instance of type _0_T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is id decl is id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) newExpr is Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning instance of type _1_T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is id decl is id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) newExpr is Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _2_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) function with parameters instance of type _2_T (not function type) returning instance of type _2_T (not function type) ) Environment: there are 1 alternatives before elimination there are 1 alternatives after elimination nameExpr is 0 decl is 0: forall T: incomplete type pointer to instance of type T (not function type) newExpr is Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) decl is 0: signed int newExpr is Variable Expression: 0: signed int alternatives before prune: Cost ( 0, 0, 0 ): Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) (types: forall _3_T: incomplete type lvalue pointer to instance of type _3_T (not function type) ) Environment: Cost ( 0, 0, 0 ): Variable Expression: 0: signed int (types: lvalue signed int ) Environment: there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 0, 0 ): Variable Expression: 0: signed int (types: lvalue signed int ) Environment: Cost ( 0, 0, 0 ): Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) (types: forall _3_T: incomplete type lvalue pointer to instance of type _3_T (not function type) ) Environment: working on alternative: Cost ( 0, 0, 0 ): Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _2_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) function with parameters instance of type _2_T (not function type) returning instance of type _2_T (not function type) ) Environment: formal type is instance of type _2_T (not function type) actual type is lvalue signed int need assertions: ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) with pointer to forall _4_DT: incomplete type function with parameters pointer to pointer to instance of type _4_DT (not function type) pointer to instance of type _4_DT (not function type) returning pointer to instance of type _4_DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) with declaration 4 ?=?: function with parameters pointer to signed int signed int returning signed int formal type is instance of type _2_T (not function type) actual type is forall _3_T: incomplete type lvalue pointer to instance of type _3_T (not function type) need assertions: ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) with pointer to forall _5_DT: incomplete type function with parameters pointer to pointer to instance of type _5_DT (not function type) pointer to instance of type _5_DT (not function type) returning pointer to instance of type _5_DT (not function type) success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) with declaration 8 ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int actual expression: Variable Expression: 0: signed int --- results are lvalue signed int converting lvalue signed int to instance of type _2_T (not function type) cost is( 0, 0, 0 ) converting pointer to function with parameters pointer to signed int signed int returning signed int to pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type _2_T (not function type) actuals are: Variable Expression: 0: signed int bindings are: ( _2_T ) -> signed int cost of conversion is:( 0, 4, 0 ) actual expression: Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) --- results are forall _3_T: incomplete type lvalue pointer to instance of type _3_T (not function type) converting forall _3_T: incomplete type lvalue pointer to instance of type _3_T (not function type) to instance of type _2_T (not function type) cost is( 0, 0, 0 ) converting pointer to forall _5_DT: incomplete type function with parameters pointer to pointer to instance of type _5_DT (not function type) pointer to instance of type _5_DT (not function type) returning pointer to instance of type _5_DT (not function type) to pointer to function with parameters pointer to instance of type _2_T (not function type) instance of type _2_T (not function type) returning instance of type _2_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type _2_T (not function type) actuals are: Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) bindings are: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT ) (no widening) cost of conversion is:( 0, 4, 0 ) alternatives before prune: Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int (types: instance of type _2_T (not function type) ) Environment: ( _2_T ) -> signed int Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: instance of type _2_T (not function type) ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT ) (no widening) there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int (types: signed int ) Environment: ( _2_T ) -> signed int Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT ) (no widening) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _1_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) function with parameters instance of type _1_T (not function type) returning instance of type _1_T (not function type) ) Environment: formal type is instance of type _1_T (not function type) actual type is signed int need assertions: ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to forall _6_DT: incomplete type function with parameters pointer to pointer to instance of type _6_DT (not function type) pointer to instance of type _6_DT (not function type) returning pointer to instance of type _6_DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with declaration 4 ?=?: function with parameters pointer to signed int signed int returning signed int formal type is instance of type _1_T (not function type) actual type is forall _3_T: incomplete type pointer to instance of type _3_T (not function type) need assertions: ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to forall _7_DT: incomplete type function with parameters pointer to pointer to instance of type _7_DT (not function type) pointer to instance of type _7_DT (not function type) returning pointer to instance of type _7_DT (not function type) success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with declaration 8 ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int actual expression: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int --- results are signed int converting signed int to instance of type _1_T (not function type) cost is( 0, 0, 0 ) converting pointer to function with parameters pointer to signed int signed int returning signed int to pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type _1_T (not function type) actuals are: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int bindings are: ( _2_T ) -> signed int (no widening) ( _1_T ) -> signed int cost of conversion is:( 0, 4, 0 ) actual expression: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) --- results are forall _3_T: incomplete type pointer to instance of type _3_T (not function type) converting forall _3_T: incomplete type pointer to instance of type _3_T (not function type) to instance of type _1_T (not function type) cost is( 0, 0, 0 ) converting pointer to forall _7_DT: incomplete type function with parameters pointer to pointer to instance of type _7_DT (not function type) pointer to instance of type _7_DT (not function type) returning pointer to instance of type _7_DT (not function type) to pointer to function with parameters pointer to instance of type _1_T (not function type) instance of type _1_T (not function type) returning instance of type _1_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type _1_T (not function type) actuals are: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) bindings are: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT _7_DT ) (no widening) cost of conversion is:( 0, 4, 0 ) alternatives before prune: Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int (types: instance of type _1_T (not function type) ) Environment: ( _2_T ) -> signed int (no widening) ( _1_T ) -> signed int Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: instance of type _1_T (not function type) ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT _7_DT ) (no widening) there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int (types: signed int ) Environment: ( _2_T ) -> signed int (no widening) ( _1_T ) -> signed int Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT _7_DT ) (no widening) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) (types: pointer to forall _0_T: type with assertions ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) function with parameters instance of type _0_T (not function type) returning instance of type _0_T (not function type) ) Environment: formal type is instance of type _0_T (not function type) actual type is signed int need assertions: ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to forall _8_DT: incomplete type function with parameters pointer to pointer to instance of type _8_DT (not function type) pointer to instance of type _8_DT (not function type) returning pointer to instance of type _8_DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with declaration 4 ?=?: function with parameters pointer to signed int signed int returning signed int formal type is instance of type _0_T (not function type) actual type is forall _3_T: incomplete type pointer to instance of type _3_T (not function type) need assertions: ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) (used)============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== inferRecursive: assertion is ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) inferRecursive: candidate is ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to forall _9_DT: incomplete type function with parameters pointer to pointer to instance of type _9_DT (not function type) pointer to instance of type _9_DT (not function type) returning pointer to instance of type _9_DT (not function type) success! satisfying assertion 28 ?=?: pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with declaration 8 ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) inferRecursive: candidate is ?=?: function with parameters pointer to signed int signed int returning signed int unifying pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) with pointer to function with parameters pointer to signed int signed int returning signed int actual expression: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int --- results are signed int converting signed int to instance of type _0_T (not function type) cost is( 0, 0, 0 ) converting pointer to function with parameters pointer to signed int signed int returning signed int to pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type _0_T (not function type) actuals are: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int bindings are: ( _2_T ) -> signed int (no widening) ( _1_T ) -> signed int (no widening) ( _0_T ) -> signed int cost of conversion is:( 0, 4, 0 ) actual expression: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) --- results are forall _3_T: incomplete type pointer to instance of type _3_T (not function type) converting forall _3_T: incomplete type pointer to instance of type _3_T (not function type) to instance of type _0_T (not function type) cost is( 0, 0, 0 ) converting pointer to forall _9_DT: incomplete type function with parameters pointer to pointer to instance of type _9_DT (not function type) pointer to instance of type _9_DT (not function type) returning pointer to instance of type _9_DT (not function type) to pointer to function with parameters pointer to instance of type _0_T (not function type) instance of type _0_T (not function type) returning instance of type _0_T (not function type) cost of conversion is ( 0, 0, 0 ) Case +++++++++++++ formals are: instance of type _0_T (not function type) actuals are: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) bindings are: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _0_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT _7_DT _9_DT ) (no widening) cost of conversion is:( 0, 4, 0 ) alternatives before prune: Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int (types: instance of type _0_T (not function type) ) Environment: ( _2_T ) -> signed int (no widening) ( _1_T ) -> signed int (no widening) ( _0_T ) -> signed int Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: instance of type _0_T (not function type) ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _0_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT _7_DT _9_DT ) (no widening) there are 2 alternatives before elimination there are 2 alternatives after elimination findSubExprs Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int with inferred parameters: ?=?: function with parameters pointer to signed int signed int returning signed int (types: signed int ) Environment: ( _2_T ) -> signed int (no widening) ( _1_T ) -> signed int (no widening) ( _0_T ) -> signed int Cost ( 0, 4, 0 ): Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _0_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) ( _3_T _5_DT _7_DT _9_DT ) (no widening) working on alternative: Cost ( 0, 0, 0 ): Variable Expression: h: function with parameters null: pointer to signed int returning nothing (types: pointer to function with parameters null: pointer to signed int returning nothing ) Environment: formal type is pointer to signed int actual type is signed int formal type is pointer to signed int actual type is forall _3_T: incomplete type pointer to instance of type _3_T (not function type) need assertions: ============= original indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== ============= new indexer ===idTable=== ===typeTable=== T ===structTable=== ===enumTable=== ===unionTable=== ===contextTable=== actual expression: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) --- results are forall _3_T: incomplete type pointer to instance of type _3_T (not function type) converting forall _3_T: incomplete type pointer to instance of type _3_T (not function type) to pointer to signed int cost is( 0, 0, 0 ) Case +++++++++++++ formals are: null: pointer to signed int actuals are: Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) bindings are: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _0_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _3_T _5_DT _7_DT _9_DT ) -> signed int (no widening) cost of conversion is:( 0, 1, 0 ) alternatives before prune: Cost ( 0, 1, 0 ): Application of Variable Expression: h: function with parameters null: pointer to signed int returning nothing to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) (types: ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _0_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _3_T _5_DT _7_DT _9_DT ) -> signed int (no widening) there are 1 alternatives before elimination there are 1 alternatives after elimination alternatives before prune: Cost ( 0, 0, 0 ): Cast of: Application of Variable Expression: h: function with parameters null: pointer to signed int returning nothing to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Application of Variable Expression: id: forall T: type with assertions ?=?: pointer to function with parameters pointer to instance of type T (not function type) instance of type T (not function type) returning instance of type T (not function type) function with parameters instance of type T (not function type) returning instance of type T (not function type) to arguments Variable Expression: 0: forall T: incomplete type pointer to instance of type T (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) with inferred parameters: ?=?: forall DT: incomplete type function with parameters pointer to pointer to instance of type DT (not function type) pointer to instance of type DT (not function type) returning pointer to instance of type DT (not function type) to: nothing (types: ) Environment: ( _2_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _1_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _0_T ) -> forall _3_T: incomplete type pointer to instance of type _3_T (not function type) (no widening) ( _3_T _5_DT _7_DT _9_DT ) -> signed int (no widening) there are 1 alternatives before elimination there are 1 alternatives after elimination int ___operator_assign__Fi_Pii_(int *, int ); void *___operator_assign__A0_1_0__FPd0_PPd0Pd0_(void **, void *); void __a__F__(){ void __f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *); void __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(void (*__p__PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0_)(void (*_adapterF2tU_P2tU2tU_)(void (*)(), void *, void *, void *), long unsigned int U, void (*___operator_assign__PF2tU_P2tU2tU_)(), void *)); __g__F_PA1_0_0____operator_assign__PFt0_Pt0t0__F_t0__(__f__A1_0_0____operator_assign__PFt0_Pt0t0__F_t0_); } void __g__F__(){ void __h__F_Pi_(int *__null__Pi); void __id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(void (*_adapterF2tT_P2tT2tT_)(void (*)(), void *, void *, void *), long unsigned int T, void (*___operator_assign__PF2tT_P2tT2tT_)(), void *, void *); void *___constant_zero__A0_1_0__Pd0; int ___constant_zero__i; void *_thunk0(void **_p0, void *_p1){ return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1); } void *_thunk1(void **_p0, void *_p1){ return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1); } void *_thunk2(void **_p0, void *_p1){ return ___operator_assign__A0_1_0__FPd0_PPd0Pd0_(_p0, _p1); } void *_temp0; void _adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_(void (*_adaptee)(), void *_ret, void *_p0, void *_p1){ ((*((_3_T **)_ret))=((void *(*)(void **, void *))_adaptee)(_p0, (*((_3_T **)_p1)))); } void *_temp1; void *_temp2; __h__F_Pi_((__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk2)), (&_temp2), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk1)), (&_temp1), (&(__id__A1_0_0____operator_assign__PFt0_Pt0t0__Ft0_t0_(_adapterFA0_1_0__Pd0_PA0_1_0__Pd1A0_1_0__Pd2_, sizeof(_3_T *), ((void (*)())(&_thunk0)), (&_temp0), (&___constant_zero__A0_1_0__Pd0)) , _temp0))) , _temp1))) , _temp2)); }