{
  "attributes":
  {
    "absolutePath": "a",
    "exportedSymbols":
    {
      "C":
      [
        39
      ]
    }
  },
  "children":
  [
    {
      "attributes":
      {
        "abstract": false,
        "baseContracts":
        [
          null
        ],
        "contractDependencies":
        [
          null
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts":
        [
          39
        ],
        "name": "C",
        "scope": 40
      },
      "children":
      [
        {
          "attributes":
          {
            "constant": false,
            "functionSelector": "97682884",
            "mutability": "mutable",
            "name": "m",
            "scope": 39,
            "stateVariable": true,
            "storageLocation": "default",
            "type": "mapping(address => address payable)",
            "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":
          {
            "functionSelector": "fc68521a",
            "implemented": true,
            "isConstructor": false,
            "kind": "function",
            "modifiers":
            [
              null
            ],
            "name": "f",
            "scope": 39,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          "children":
          [
            {
              "children":
              [
                {
                  "attributes":
                  {
                    "constant": false,
                    "mutability": "mutable",
                    "name": "arg",
                    "scope": 38,
                    "stateVariable": false,
                    "storageLocation": "default",
                    "type": "address payable",
                    "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,
                    "mutability": "mutable",
                    "name": "r",
                    "scope": 38,
                    "stateVariable": false,
                    "storageLocation": "default",
                    "type": "address payable",
                    "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,
                        "mutability": "mutable",
                        "name": "a",
                        "scope": 37,
                        "stateVariable": false,
                        "storageLocation": "default",
                        "type": "address payable",
                        "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":
                      {
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "type": "address payable"
                      },
                      "children":
                      [
                        {
                          "attributes":
                          {
                            "overloadedDeclarations":
                            [
                              null
                            ],
                            "referencedDeclaration": 4,
                            "type": "mapping(address => address payable)",
                            "value": "m"
                          },
                          "id": 13,
                          "name": "Identifier",
                          "src": "164:1:1"
                        },
                        {
                          "attributes":
                          {
                            "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":
                      {
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "operator": "=",
                        "type": "address payable"
                      },
                      "children":
                      [
                        {
                          "attributes":
                          {
                            "overloadedDeclarations":
                            [
                              null
                            ],
                            "referencedDeclaration": 9,
                            "type": "address payable",
                            "value": "r"
                          },
                          "id": 17,
                          "name": "Identifier",
                          "src": "180:1:1"
                        },
                        {
                          "attributes":
                          {
                            "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,
                        "mutability": "mutable",
                        "name": "c",
                        "scope": 37,
                        "stateVariable": false,
                        "storageLocation": "default",
                        "type": "address",
                        "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":
                      {
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "isStructConstructorCall": false,
                        "lValueRequested": false,
                        "names":
                        [
                          null
                        ],
                        "tryCall": false,
                        "type": "address",
                        "type_conversion": true
                      },
                      "children":
                      [
                        {
                          "attributes":
                          {
                            "argumentTypes":
                            [
                              {
                                "typeIdentifier": "t_contract$_C_$39",
                                "typeString": "contract C"
                              }
                            ],
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "type": "type(address)"
                          },
                          "children":
                          [
                            {
                              "attributes":
                              {
                                "name": "address"
                              },
                              "id": 23,
                              "name": "ElementaryTypeName",
                              "src": "209:7:1"
                            }
                          ],
                          "id": 24,
                          "name": "ElementaryTypeNameExpression",
                          "src": "209:7:1"
                        },
                        {
                          "attributes":
                          {
                            "overloadedDeclarations":
                            [
                              null
                            ],
                            "referencedDeclaration": -28,
                            "type": "contract C",
                            "value": "this"
                          },
                          "id": 25,
                          "name": "Identifier",
                          "src": "217:4:1"
                        }
                      ],
                      "id": 26,
                      "name": "FunctionCall",
                      "src": "209:13:1"
                    }
                  ],
                  "id": 27,
                  "name": "VariableDeclarationStatement",
                  "src": "197:25:1"
                },
                {
                  "children":
                  [
                    {
                      "attributes":
                      {
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "operator": "=",
                        "type": "address payable"
                      },
                      "children":
                      [
                        {
                          "attributes":
                          {
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "type": "address payable"
                          },
                          "children":
                          [
                            {
                              "attributes":
                              {
                                "overloadedDeclarations":
                                [
                                  null
                                ],
                                "referencedDeclaration": 4,
                                "type": "mapping(address => address payable)",
                                "value": "m"
                              },
                              "id": 28,
                              "name": "Identifier",
                              "src": "232:1:1"
                            },
                            {
                              "attributes":
                              {
                                "overloadedDeclarations":
                                [
                                  null
                                ],
                                "referencedDeclaration": 22,
                                "type": "address",
                                "value": "c"
                              },
                              "id": 29,
                              "name": "Identifier",
                              "src": "234:1:1"
                            }
                          ],
                          "id": 30,
                          "name": "IndexAccess",
                          "src": "232:4:1"
                        },
                        {
                          "attributes":
                          {
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "isStructConstructorCall": false,
                            "lValueRequested": false,
                            "names":
                            [
                              null
                            ],
                            "tryCall": false,
                            "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)"
                              },
                              "children":
                              [
                                {
                                  "attributes":
                                  {
                                    "name": "address"
                                  },
                                  "id": 31,
                                  "name": "ElementaryTypeName",
                                  "src": "239:7:1"
                                }
                              ],
                              "id": 32,
                              "name": "ElementaryTypeNameExpression",
                              "src": "239:7:1"
                            },
                            {
                              "attributes":
                              {
                                "hexvalue": "30",
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "token": "number",
                                "type": "int_const 0",
                                "value": "0"
                              },
                              "id": 33,
                              "name": "Literal",
                              "src": "247:1:1"
                            }
                          ],
                          "id": 34,
                          "name": "FunctionCall",
                          "src": "239:10:1"
                        }
                      ],
                      "id": 35,
                      "name": "Assignment",
                      "src": "232:17:1"
                    }
                  ],
                  "id": 36,
                  "name": "ExpressionStatement",
                  "src": "232:17:1"
                }
              ],
              "id": 37,
              "name": "Block",
              "src": "134:122:1"
            }
          ],
          "id": 38,
          "name": "FunctionDefinition",
          "src": "67:189:1"
        }
      ],
      "id": 39,
      "name": "ContractDefinition",
      "src": "0:258:1"
    }
  ],
  "id": 40,
  "name": "SourceUnit",
  "src": "0:259:1"
}