{ "attributes" : { "absolutePath" : "a", "exportedSymbols" : { "C" : [ 37 ] } }, "children" : [ { "attributes" : { "baseContracts" : [ null ], "contractDependencies" : [ null ], "contractKind" : "contract", "documentation" : null, "fullyImplemented" : true, "linearizedBaseContracts" : [ 37 ], "name" : "C", "scope" : 38 }, "children" : [ { "attributes" : { "constant" : false, "name" : "m", "overrides" : null, "scope" : 37, "stateVariable" : true, "storageLocation" : "default", "type" : "mapping(address => address payable)", "value" : null, "visibility" : "public" }, "children" : [ { "attributes" : { "type" : "mapping(address => address payable)" }, "children" : [ { "attributes" : { "name" : "address", "type" : "address" }, "id" : 1, "name" : "ElementaryTypeName", "src" : "25:7:1" }, { "attributes" : { "name" : "address", "stateMutability" : "payable", "type" : "address payable" }, "id" : 2, "name" : "ElementaryTypeName", "src" : "36:15:1" } ], "id" : 3, "name" : "Mapping", "src" : "17:35:1" } ], "id" : 4, "name" : "VariableDeclaration", "src" : "17:44:1" }, { "attributes" : { "documentation" : null, "implemented" : true, "isConstructor" : false, "kind" : "function", "modifiers" : [ null ], "name" : "f", "overrides" : null, "scope" : 37, "stateMutability" : "nonpayable", "superFunction" : null, "visibility" : "public" }, "children" : [ { "children" : [ { "attributes" : { "constant" : false, "name" : "arg", "overrides" : null, "scope" : 36, "stateVariable" : false, "storageLocation" : "default", "type" : "address payable", "value" : null, "visibility" : "internal" }, "children" : [ { "attributes" : { "name" : "address", "stateMutability" : "payable", "type" : "address payable" }, "id" : 5, "name" : "ElementaryTypeName", "src" : "78:15:1" } ], "id" : 6, "name" : "VariableDeclaration", "src" : "78:19:1" } ], "id" : 7, "name" : "ParameterList", "src" : "77:21:1" }, { "children" : [ { "attributes" : { "constant" : false, "name" : "r", "overrides" : null, "scope" : 36, "stateVariable" : false, "storageLocation" : "default", "type" : "address payable", "value" : null, "visibility" : "internal" }, "children" : [ { "attributes" : { "name" : "address", "stateMutability" : "payable", "type" : "address payable" }, "id" : 8, "name" : "ElementaryTypeName", "src" : "115:15:1" } ], "id" : 9, "name" : "VariableDeclaration", "src" : "115:17:1" } ], "id" : 10, "name" : "ParameterList", "src" : "114:19:1" }, { "children" : [ { "attributes" : { "assignments" : [ 12 ] }, "children" : [ { "attributes" : { "constant" : false, "name" : "a", "overrides" : null, "scope" : 35, "stateVariable" : false, "storageLocation" : "default", "type" : "address payable", "value" : null, "visibility" : "internal" }, "children" : [ { "attributes" : { "name" : "address", "stateMutability" : "payable", "type" : "address payable" }, "id" : 11, "name" : "ElementaryTypeName", "src" : "144:15:1" } ], "id" : 12, "name" : "VariableDeclaration", "src" : "144:17:1" }, { "attributes" : { "argumentTypes" : null, "isConstant" : false, "isLValue" : true, "isPure" : false, "lValueRequested" : false, "type" : "address payable" }, "children" : [ { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 4, "type" : "mapping(address => address payable)", "value" : "m" }, "id" : 13, "name" : "Identifier", "src" : "164:1:1" }, { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 6, "type" : "address payable", "value" : "arg" }, "id" : 14, "name" : "Identifier", "src" : "166:3:1" } ], "id" : 15, "name" : "IndexAccess", "src" : "164:6:1" } ], "id" : 16, "name" : "VariableDeclarationStatement", "src" : "144:26:1" }, { "children" : [ { "attributes" : { "argumentTypes" : null, "isConstant" : false, "isLValue" : false, "isPure" : false, "lValueRequested" : false, "operator" : "=", "type" : "address payable" }, "children" : [ { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 9, "type" : "address payable", "value" : "r" }, "id" : 17, "name" : "Identifier", "src" : "180:1:1" }, { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 6, "type" : "address payable", "value" : "arg" }, "id" : 18, "name" : "Identifier", "src" : "184:3:1" } ], "id" : 19, "name" : "Assignment", "src" : "180:7:1" } ], "id" : 20, "name" : "ExpressionStatement", "src" : "180:7:1" }, { "attributes" : { "assignments" : [ 22 ] }, "children" : [ { "attributes" : { "constant" : false, "name" : "c", "overrides" : null, "scope" : 35, "stateVariable" : false, "storageLocation" : "default", "type" : "address", "value" : null, "visibility" : "internal" }, "children" : [ { "attributes" : { "name" : "address", "stateMutability" : "nonpayable", "type" : "address" }, "id" : 21, "name" : "ElementaryTypeName", "src" : "197:7:1" } ], "id" : 22, "name" : "VariableDeclaration", "src" : "197:9:1" }, { "attributes" : { "argumentTypes" : null, "isConstant" : false, "isLValue" : false, "isPure" : false, "isStructConstructorCall" : false, "lValueRequested" : false, "names" : [ null ], "type" : "address", "type_conversion" : true }, "children" : [ { "attributes" : { "argumentTypes" : [ { "typeIdentifier" : "t_contract$_C_$37", "typeString" : "contract C" } ], "isConstant" : false, "isLValue" : false, "isPure" : true, "lValueRequested" : false, "type" : "type(address)", "value" : "address" }, "id" : 23, "name" : "ElementaryTypeNameExpression", "src" : "209:7:1" }, { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 66, "type" : "contract C", "value" : "this" }, "id" : 24, "name" : "Identifier", "src" : "217:4:1" } ], "id" : 25, "name" : "FunctionCall", "src" : "209:13:1" } ], "id" : 26, "name" : "VariableDeclarationStatement", "src" : "197:25:1" }, { "children" : [ { "attributes" : { "argumentTypes" : null, "isConstant" : false, "isLValue" : false, "isPure" : false, "lValueRequested" : false, "operator" : "=", "type" : "address payable" }, "children" : [ { "attributes" : { "argumentTypes" : null, "isConstant" : false, "isLValue" : true, "isPure" : false, "lValueRequested" : true, "type" : "address payable" }, "children" : [ { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 4, "type" : "mapping(address => address payable)", "value" : "m" }, "id" : 27, "name" : "Identifier", "src" : "232:1:1" }, { "attributes" : { "argumentTypes" : null, "overloadedDeclarations" : [ null ], "referencedDeclaration" : 22, "type" : "address", "value" : "c" }, "id" : 28, "name" : "Identifier", "src" : "234:1:1" } ], "id" : 29, "name" : "IndexAccess", "src" : "232:4:1" }, { "attributes" : { "argumentTypes" : null, "isConstant" : false, "isLValue" : false, "isPure" : true, "isStructConstructorCall" : false, "lValueRequested" : false, "names" : [ null ], "type" : "address payable", "type_conversion" : true }, "children" : [ { "attributes" : { "argumentTypes" : [ { "typeIdentifier" : "t_rational_0_by_1", "typeString" : "int_const 0" } ], "isConstant" : false, "isLValue" : false, "isPure" : true, "lValueRequested" : false, "type" : "type(address)", "value" : "address" }, "id" : 30, "name" : "ElementaryTypeNameExpression", "src" : "239:7:1" }, { "attributes" : { "argumentTypes" : null, "hexvalue" : "30", "isConstant" : false, "isLValue" : false, "isPure" : true, "lValueRequested" : false, "subdenomination" : null, "token" : "number", "type" : "int_const 0", "value" : "0" }, "id" : 31, "name" : "Literal", "src" : "247:1:1" } ], "id" : 32, "name" : "FunctionCall", "src" : "239:10:1" } ], "id" : 33, "name" : "Assignment", "src" : "232:17:1" } ], "id" : 34, "name" : "ExpressionStatement", "src" : "232:17:1" } ], "id" : 35, "name" : "Block", "src" : "134:122:1" } ], "id" : 36, "name" : "FunctionDefinition", "src" : "67:189:1" } ], "id" : 37, "name" : "ContractDefinition", "src" : "0:258:1" } ], "id" : 38, "name" : "SourceUnit", "src" : "0:259:1" }