{
  "fileName": "GetFunctionMocks.sol",
  "contractName": "GetFunctionChild",
  "source": "pragma solidity ^0.5.0;\n\ncontract GetFunctionBase {\n  uint256 x;\n  \n  function initialize(uint256 _x) public {\n    x = _x;\n  }\n\n  function initialize(string memory _x) public {\n    x = bytes(_x).length;\n  }\n\n  function initialize(uint256 _x, uint256 _y) public {\n    x = _x + _y;\n  }\n\n  function another(uint256 _x) public {\n    x = _x;\n  }\n}\n\ncontract GetFunctionChild is GetFunctionBase {\n  function initialize(bytes memory _x) public {\n    x = _x.length;\n  }\n}\n\ncontract GetFunctionOtherChild is GetFunctionBase {\n  function initialize(bytes32 _x) public {\n    x = uint256(_x);\n  }\n}\n\ncontract GetFunctionGrandchild is GetFunctionChild, GetFunctionOtherChild { }\n\ncontract GetFunctionOtherGrandchild is GetFunctionOtherChild, GetFunctionChild { }",
  "sourcePath": "contracts/mocks/GetFunctionMocks.sol",
  "sourceMap": "344:119:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:119:10;;;;;;;",
  "deployedSourceMap": "344:119:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:119:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;393:68;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;393:68:10;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;393:68:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;393:68:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;393:68:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;393:68:10;;;;;;;;;;;;;;;:::i;:::-;;287:53;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;287:53:10;;;;;;;;;;;;;;;;;:::i;:::-;;210:73;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;210:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;130:76;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;130:76:10;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;130:76:10;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;130:76:10;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;130:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;130:76:10;;;;;;;;;;;;;;;:::i;:::-;;70:56;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;70:56:10;;;;;;;;;;;;;;;;;:::i;:::-;;393:68;447:2;:9;443:1;:13;;;;393:68;:::o;287:53::-;333:2;329:1;:6;;;;287:53;:::o;210:73::-;276:2;271;:7;267:1;:11;;;;210:73;;:::o;130:76::-;191:2;185:16;181:1;:20;;;;130:76;:::o;70:56::-;119:2;115:1;:6;;;;70:56;:::o",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_x",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_x",
          "type": "uint256"
        }
      ],
      "name": "another",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_x",
          "type": "uint256"
        },
        {
          "name": "_y",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_x",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_x",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/mocks/GetFunctionMocks.sol",
    "exportedSymbols": {
      "GetFunctionBase": [
        1597
      ],
      "GetFunctionChild": [
        1611
      ],
      "GetFunctionGrandchild": [
        1631
      ],
      "GetFunctionOtherChild": [
        1626
      ],
      "GetFunctionOtherGrandchild": [
        1636
      ]
    },
    "id": 1637,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1547,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:10"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1597,
        "linearizedBaseContracts": [
          1597
        ],
        "name": "GetFunctionBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1549,
            "name": "x",
            "nodeType": "VariableDeclaration",
            "scope": 1597,
            "src": "54:9:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1548,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "54:7:10",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1558,
              "nodeType": "Block",
              "src": "109:17:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1554,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1549,
                      "src": "115:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1555,
                      "name": "_x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1551,
                      "src": "119:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "115:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1557,
                  "nodeType": "ExpressionStatement",
                  "src": "115:6:10"
                }
              ]
            },
            "documentation": null,
            "id": 1559,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1551,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1559,
                  "src": "90:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "90:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "89:12:10"
            },
            "returnParameters": {
              "id": 1553,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "109:0:10"
            },
            "scope": 1597,
            "src": "70:56:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1571,
              "nodeType": "Block",
              "src": "175:31:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1564,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1549,
                      "src": "181:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1566,
                            "name": "_x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1561,
                            "src": "191:2:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "185:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 1567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "185:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "185:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "181:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1570,
                  "nodeType": "ExpressionStatement",
                  "src": "181:20:10"
                }
              ]
            },
            "documentation": null,
            "id": 1572,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1561,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1572,
                  "src": "150:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1560,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "150:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "149:18:10"
            },
            "returnParameters": {
              "id": 1563,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "175:0:10"
            },
            "scope": 1597,
            "src": "130:76:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1585,
              "nodeType": "Block",
              "src": "261:22:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1579,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1549,
                      "src": "267:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1580,
                        "name": "_x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "271:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1581,
                        "name": "_y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1576,
                        "src": "276:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "271:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "267:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1584,
                  "nodeType": "ExpressionStatement",
                  "src": "267:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 1586,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1574,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1586,
                  "src": "230:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "230:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1576,
                  "name": "_y",
                  "nodeType": "VariableDeclaration",
                  "scope": 1586,
                  "src": "242:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "242:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "229:24:10"
            },
            "returnParameters": {
              "id": 1578,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "261:0:10"
            },
            "scope": 1597,
            "src": "210:73:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1595,
              "nodeType": "Block",
              "src": "323:17:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1591,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1549,
                      "src": "329:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1592,
                      "name": "_x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1588,
                      "src": "333:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "329:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1594,
                  "nodeType": "ExpressionStatement",
                  "src": "329:6:10"
                }
              ]
            },
            "documentation": null,
            "id": 1596,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "another",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1588,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1596,
                  "src": "304:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "304:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "303:12:10"
            },
            "returnParameters": {
              "id": 1590,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "323:0:10"
            },
            "scope": 1597,
            "src": "287:53:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1637,
        "src": "25:317:10"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1598,
              "name": "GetFunctionBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1597,
              "src": "373:15:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GetFunctionBase_$1597",
                "typeString": "contract GetFunctionBase"
              }
            },
            "id": 1599,
            "nodeType": "InheritanceSpecifier",
            "src": "373:15:10"
          }
        ],
        "contractDependencies": [
          1597
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1611,
        "linearizedBaseContracts": [
          1611,
          1597
        ],
        "name": "GetFunctionChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1609,
              "nodeType": "Block",
              "src": "437:24:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1604,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1549,
                      "src": "443:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1605,
                        "name": "_x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1601,
                        "src": "447:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "447:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "443:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1608,
                  "nodeType": "ExpressionStatement",
                  "src": "443:13:10"
                }
              ]
            },
            "documentation": null,
            "id": 1610,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1601,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1610,
                  "src": "413:15:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1600,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "412:17:10"
            },
            "returnParameters": {
              "id": 1603,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "437:0:10"
            },
            "scope": 1611,
            "src": "393:68:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1637,
        "src": "344:119:10"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1612,
              "name": "GetFunctionBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1597,
              "src": "499:15:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GetFunctionBase_$1597",
                "typeString": "contract GetFunctionBase"
              }
            },
            "id": 1613,
            "nodeType": "InheritanceSpecifier",
            "src": "499:15:10"
          }
        ],
        "contractDependencies": [
          1597
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1626,
        "linearizedBaseContracts": [
          1626,
          1597
        ],
        "name": "GetFunctionOtherChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1624,
              "nodeType": "Block",
              "src": "558:26:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1618,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1549,
                      "src": "564:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1620,
                          "name": "_x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1615,
                          "src": "576:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "568:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": "uint256"
                      },
                      "id": 1621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "568:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "564:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1623,
                  "nodeType": "ExpressionStatement",
                  "src": "564:15:10"
                }
              ]
            },
            "documentation": null,
            "id": 1625,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1615,
                  "name": "_x",
                  "nodeType": "VariableDeclaration",
                  "scope": 1625,
                  "src": "539:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "539:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "538:12:10"
            },
            "returnParameters": {
              "id": 1617,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "558:0:10"
            },
            "scope": 1626,
            "src": "519:65:10",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1637,
        "src": "465:121:10"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1627,
              "name": "GetFunctionChild",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1611,
              "src": "622:16:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GetFunctionChild_$1611",
                "typeString": "contract GetFunctionChild"
              }
            },
            "id": 1628,
            "nodeType": "InheritanceSpecifier",
            "src": "622:16:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1629,
              "name": "GetFunctionOtherChild",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1626,
              "src": "640:21:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GetFunctionOtherChild_$1626",
                "typeString": "contract GetFunctionOtherChild"
              }
            },
            "id": 1630,
            "nodeType": "InheritanceSpecifier",
            "src": "640:21:10"
          }
        ],
        "contractDependencies": [
          1597,
          1611,
          1626
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1631,
        "linearizedBaseContracts": [
          1631,
          1626,
          1611,
          1597
        ],
        "name": "GetFunctionGrandchild",
        "nodeType": "ContractDefinition",
        "nodes": [],
        "scope": 1637,
        "src": "588:77:10"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1632,
              "name": "GetFunctionOtherChild",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1626,
              "src": "706:21:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GetFunctionOtherChild_$1626",
                "typeString": "contract GetFunctionOtherChild"
              }
            },
            "id": 1633,
            "nodeType": "InheritanceSpecifier",
            "src": "706:21:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1634,
              "name": "GetFunctionChild",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1611,
              "src": "729:16:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_GetFunctionChild_$1611",
                "typeString": "contract GetFunctionChild"
              }
            },
            "id": 1635,
            "nodeType": "InheritanceSpecifier",
            "src": "729:16:10"
          }
        ],
        "contractDependencies": [
          1597,
          1611,
          1626
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1636,
        "linearizedBaseContracts": [
          1636,
          1611,
          1626,
          1597
        ],
        "name": "GetFunctionOtherGrandchild",
        "nodeType": "ContractDefinition",
        "nodes": [],
        "scope": 1637,
        "src": "667:82:10"
      }
    ],
    "src": "0:749:10"
  },
  "bytecode": "0x608060405234801561001057600080fd5b506102c9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063439fab911461005c578063499af20114610117578063e4a3011614610145578063f62d18881461017d578063fe4b84df14610238575b600080fd5b6101156004803603602081101561007257600080fd5b810190808035906020019064010000000081111561008f57600080fd5b8201836020820111156100a157600080fd5b803590602001918460018302840111640100000000831117156100c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610266565b005b6101436004803603602081101561012d57600080fd5b8101908080359060200190929190505050610271565b005b61017b6004803603604081101561015b57600080fd5b81019080803590602001909291908035906020019092919050505061027b565b005b6102366004803603602081101561019357600080fd5b81019080803590602001906401000000008111156101b057600080fd5b8201836020820111156101c257600080fd5b803590602001918460018302840111640100000000831117156101e457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610288565b005b6102646004803603602081101561024e57600080fd5b8101908080359060200190929190505050610293565b005b805160008190555050565b8060008190555050565b8082016000819055505050565b805160008190555050565b806000819055505056fea165627a7a72305820e7704dd54412a35dc61ecf46d963f867be0ef6b9d5c9ba837fcf62f4b8414da00029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063439fab911461005c578063499af20114610117578063e4a3011614610145578063f62d18881461017d578063fe4b84df14610238575b600080fd5b6101156004803603602081101561007257600080fd5b810190808035906020019064010000000081111561008f57600080fd5b8201836020820111156100a157600080fd5b803590602001918460018302840111640100000000831117156100c357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610266565b005b6101436004803603602081101561012d57600080fd5b8101908080359060200190929190505050610271565b005b61017b6004803603604081101561015b57600080fd5b81019080803590602001909291908035906020019092919050505061027b565b005b6102366004803603602081101561019357600080fd5b81019080803590602001906401000000008111156101b057600080fd5b8201836020820111156101c257600080fd5b803590602001918460018302840111640100000000831117156101e457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610288565b005b6102646004803603602081101561024e57600080fd5b8101908080359060200190929190505050610293565b005b805160008190555050565b8060008190555050565b8082016000819055505050565b805160008190555050565b806000819055505056fea165627a7a72305820e7704dd54412a35dc61ecf46d963f867be0ef6b9d5c9ba837fcf62f4b8414da00029",
  "compiler": {
    "name": "solc",
    "version": "0.5.3+commit.10d17f24.Emscripten.clang",
    "optimizer": {},
    "evmVersion": "constantinople"
  }
}
