{
  "fileName": "MultipleInheritanceInitializableMocks.sol",
  "contractName": "SampleFather",
  "source": "pragma solidity ^0.6.0;\n// SPDX-License-Identifier: MIT\n\nimport '../Initializable.sol';\n\n// Sample contracts showing upgradeability with multiple inheritance.\n// Child contract inherits from Father and Mother contracts, and Father extends from Gramps.\n//\n//         Human\n//       /       \\\n//      |       Gramps\n//      |         |\n//    Mother    Father\n//      |         |\n//      -- Child --\n\n/**\n * Sample base intializable contract that is a human\n */\ncontract SampleHuman is Initializable {\n  bool public isHuman;\n\n  function initialize() initializer virtual public {\n    isHuman = true;\n  }\n}\n\n/**\n * Sample base intializable contract that defines a field mother\n */\ncontract SampleMother is Initializable, SampleHuman {\n  uint256 public mother;\n\n  function initialize(uint256 value) initializer virtual public {\n    SampleHuman.initialize();\n    mother = value;\n  }\n}\n\n/**\n * Sample base intializable contract that defines a field gramps\n */\ncontract SampleGramps is Initializable, SampleHuman {\n  uint256 public gramps;\n\n  function initialize(uint256 value) initializer virtual public {\n    SampleHuman.initialize();\n    gramps = value;\n  }\n}\n\n/**\n * Sample base intializable contract that defines a field father and extends from gramps\n */\ncontract SampleFather is Initializable, SampleGramps {\n  uint256 public father;\n\n  function initialize(uint256 _gramps, uint256 _father) initializer virtual public {\n    SampleGramps.initialize(_gramps);\n    father = _father;\n  }\n}\n\n/**\n * Child extends from mother, father (gramps)\n */\ncontract SampleChild is Initializable, SampleMother, SampleFather {\n  uint256 public child;\n\n  function initialize(uint256 _mother, uint256 _gramps, uint256 _father, uint256 _child) initializer public {\n    SampleMother.initialize(_mother);\n    SampleFather.initialize(_gramps, _father);\n    child = _child;\n  }\n\n  function initialize(uint256 value) initializer override(SampleMother, SampleGramps) public {\n  }\n\n  function initialize(uint256 _gramps, uint256 _father) initializer override(SampleFather) public {\n  }\n\n\n}\n",
  "sourcePath": "contracts/mocks/MultipleInheritanceInitializableMocks.sol",
  "sourceMap": "1252:231:14:-:0;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "1252:231:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;501:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;525:74;;;:::i;:::-;;1335:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1008:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1034:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1309:21;;;;;;:::o;501:19::-;;;;;;;;;;;;;:::o;525:74::-;1056:12:0;;;;;;;;;;;:31;;;;1072:15;:13;:15;;:::i;:::-;1056:31;:47;;;;1092:11;;;;;;;;;;;1091:12;1056:47;1048:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:19;1184:12;;;;;;;;;;;1183:13;1161:35;;1206:14;1202:80;;;1245:4;1230:12;;:19;;;;;;;;;;;;;;;;;;1271:4;1257:11;;:18;;;;;;;;;;;;;;;;;;1202:80;590:4:14::1;580:7;;:14;;;;;;;;;;;;;;;;;;1288:1:0;1300:14:::0;1296:55;;;1339:5;1324:12;;:20;;;;;;;;;;;;;;;;;;1296:55;525:74:14;;:::o;1335:146::-;1056:12:0;;;;;;;;;;;:31;;;;1072:15;:13;:15;;:::i;:::-;1056:31;:47;;;;1092:11;;;;;;;;;;;1091:12;1056:47;1048:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:19;1184:12;;;;;;;;;;;1183:13;1161:35;;1206:14;1202:80;;;1245:4;1230:12;;:19;;;;;;;;;;;;;;;;;;1271:4;1257:11;;:18;;;;;;;;;;;;;;;;;;1202:80;1422:32:14::1;1446:7;1422:23;:32;;:::i;:::-;1469:7;1460:6;;:16;;;;;;;1288:1:0;1300:14:::0;1296:55;;;1339:5;1324:12;;:20;;;;;;;;;;;;;;;;;;1296:55;1335:146:14;;;;:::o;1008:21::-;;;;;;:::o;1034:117::-;1056:12:0;;;;;;;;;;;:31;;;;1072:15;:13;:15;;:::i;:::-;1056:31;:47;;;;1092:11;;;;;;;;;;;1091:12;1056:47;1048:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:19;1184:12;;;;;;;;;;;1183:13;1161:35;;1206:14;1202:80;;;1245:4;1230:12;;:19;;;;;;;;;;;;;;;;;;1271:4;1257:11;;:18;;;;;;;;;;;;;;;;;;1202:80;1102:24:14::1;:22;:24;;:::i;:::-;1141:5;1132:6;;:14;;;;;;;1288:1:0;1300:14:::0;1296:55;;;1339:5;1324:12;;:20;;;;;;;;;;;;;;;;;;1296:55;1034:117:14;;;:::o;1441:498:0:-;1488:4;1829:12;1852:4;1829:28;;1863:10;1908:4;1896:17;1890:23;;1933:1;1927:2;:7;1920:14;;;;;;1441:498;;;;:::o",
  "abi": [
    {
      "inputs": [],
      "name": "father",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gramps",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gramps",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_father",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isHuman",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/mocks/MultipleInheritanceInitializableMocks.sol",
    "exportedSymbols": {
      "SampleChild": [
        4331
      ],
      "SampleFather": [
        4267
      ],
      "SampleGramps": [
        4239
      ],
      "SampleHuman": [
        4189
      ],
      "SampleMother": [
        4214
      ]
    },
    "id": 4332,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4172,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:14"
      },
      {
        "absolutePath": "contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 4173,
        "nodeType": "ImportDirective",
        "scope": 4332,
        "sourceUnit": 75,
        "src": "57:30:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4175,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "483:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4176,
            "nodeType": "InheritanceSpecifier",
            "src": "483:13:14"
          }
        ],
        "contractDependencies": [
          74
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4174,
          "nodeType": "StructuredDocumentation",
          "src": "398:60:14",
          "text": " Sample base intializable contract that is a human"
        },
        "fullyImplemented": true,
        "id": 4189,
        "linearizedBaseContracts": [
          4189,
          74
        ],
        "name": "SampleHuman",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "4a6c9db6",
            "id": 4178,
            "mutability": "mutable",
            "name": "isHuman",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4189,
            "src": "501:19:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4177,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "501:4:14",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4187,
              "nodeType": "Block",
              "src": "574:25:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4183,
                      "name": "isHuman",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4178,
                      "src": "580:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4184,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "590:4:14",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "580:14:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4186,
                  "nodeType": "ExpressionStatement",
                  "src": "580:14:14"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "8129fc1c",
            "id": 4188,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4181,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4180,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "547:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "547:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4179,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "544:2:14"
            },
            "returnParameters": {
              "id": 4182,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "574:0:14"
            },
            "scope": 4189,
            "src": "525:74:14",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 4332,
        "src": "459:142:14"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4191,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "701:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4192,
            "nodeType": "InheritanceSpecifier",
            "src": "701:13:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4193,
              "name": "SampleHuman",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4189,
              "src": "716:11:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleHuman_$4189",
                "typeString": "contract SampleHuman"
              }
            },
            "id": 4194,
            "nodeType": "InheritanceSpecifier",
            "src": "716:11:14"
          }
        ],
        "contractDependencies": [
          74,
          4189
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4190,
          "nodeType": "StructuredDocumentation",
          "src": "603:72:14",
          "text": " Sample base intializable contract that defines a field mother"
        },
        "fullyImplemented": true,
        "id": 4214,
        "linearizedBaseContracts": [
          4214,
          4189,
          74
        ],
        "name": "SampleMother",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "ed7dfee3",
            "id": 4196,
            "mutability": "mutable",
            "name": "mother",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4214,
            "src": "732:21:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4195,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "732:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4212,
              "nodeType": "Block",
              "src": "820:55:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4203,
                        "name": "SampleHuman",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4189,
                        "src": "826:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleHuman_$4189_$",
                          "typeString": "type(contract SampleHuman)"
                        }
                      },
                      "id": 4205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4188,
                      "src": "826:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "826:24:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4207,
                  "nodeType": "ExpressionStatement",
                  "src": "826:24:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4208,
                      "name": "mother",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4196,
                      "src": "856:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4209,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4198,
                      "src": "865:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "856:14:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4211,
                  "nodeType": "ExpressionStatement",
                  "src": "856:14:14"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "fe4b84df",
            "id": 4213,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4201,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4200,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "793:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "793:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4198,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4213,
                  "src": "778:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4197,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "778:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "777:15:14"
            },
            "returnParameters": {
              "id": 4202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "820:0:14"
            },
            "scope": 4214,
            "src": "758:117:14",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 4332,
        "src": "676:201:14"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4216,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "977:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4217,
            "nodeType": "InheritanceSpecifier",
            "src": "977:13:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4218,
              "name": "SampleHuman",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4189,
              "src": "992:11:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleHuman_$4189",
                "typeString": "contract SampleHuman"
              }
            },
            "id": 4219,
            "nodeType": "InheritanceSpecifier",
            "src": "992:11:14"
          }
        ],
        "contractDependencies": [
          74,
          4189
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4215,
          "nodeType": "StructuredDocumentation",
          "src": "879:72:14",
          "text": " Sample base intializable contract that defines a field gramps"
        },
        "fullyImplemented": true,
        "id": 4239,
        "linearizedBaseContracts": [
          4239,
          4189,
          74
        ],
        "name": "SampleGramps",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "fa39851f",
            "id": 4221,
            "mutability": "mutable",
            "name": "gramps",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4239,
            "src": "1008:21:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4220,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1008:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4237,
              "nodeType": "Block",
              "src": "1096:55:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4228,
                        "name": "SampleHuman",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4189,
                        "src": "1102:11:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleHuman_$4189_$",
                          "typeString": "type(contract SampleHuman)"
                        }
                      },
                      "id": 4230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4188,
                      "src": "1102:22:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1102:24:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4232,
                  "nodeType": "ExpressionStatement",
                  "src": "1102:24:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4233,
                      "name": "gramps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4221,
                      "src": "1132:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4234,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4223,
                      "src": "1141:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1132:14:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4236,
                  "nodeType": "ExpressionStatement",
                  "src": "1132:14:14"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "fe4b84df",
            "id": 4238,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4226,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4225,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "1069:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1069:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4223,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4238,
                  "src": "1054:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4222,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1054:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1053:15:14"
            },
            "returnParameters": {
              "id": 4227,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1096:0:14"
            },
            "scope": 4239,
            "src": "1034:117:14",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 4332,
        "src": "952:201:14"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4241,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "1277:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4242,
            "nodeType": "InheritanceSpecifier",
            "src": "1277:13:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4243,
              "name": "SampleGramps",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4239,
              "src": "1292:12:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleGramps_$4239",
                "typeString": "contract SampleGramps"
              }
            },
            "id": 4244,
            "nodeType": "InheritanceSpecifier",
            "src": "1292:12:14"
          }
        ],
        "contractDependencies": [
          74,
          4189,
          4239
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4240,
          "nodeType": "StructuredDocumentation",
          "src": "1155:96:14",
          "text": " Sample base intializable contract that defines a field father and extends from gramps"
        },
        "fullyImplemented": true,
        "id": 4267,
        "linearizedBaseContracts": [
          4267,
          4239,
          4189,
          74
        ],
        "name": "SampleFather",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "1c8aca3b",
            "id": 4246,
            "mutability": "mutable",
            "name": "father",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4267,
            "src": "1309:21:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4245,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1309:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4265,
              "nodeType": "Block",
              "src": "1416:65:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4258,
                        "name": "_gramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4248,
                        "src": "1446:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4255,
                        "name": "SampleGramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4239,
                        "src": "1422:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleGramps_$4239_$",
                          "typeString": "type(contract SampleGramps)"
                        }
                      },
                      "id": 4257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4238,
                      "src": "1422:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1422:32:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4260,
                  "nodeType": "ExpressionStatement",
                  "src": "1422:32:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4261,
                      "name": "father",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4246,
                      "src": "1460:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4262,
                      "name": "_father",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4250,
                      "src": "1469:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1460:16:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4264,
                  "nodeType": "ExpressionStatement",
                  "src": "1460:16:14"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e4a30116",
            "id": 4266,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4253,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4252,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "1389:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1389:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4248,
                  "mutability": "mutable",
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4266,
                  "src": "1355:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4247,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1355:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4250,
                  "mutability": "mutable",
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4266,
                  "src": "1372:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4249,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1372:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1354:34:14"
            },
            "returnParameters": {
              "id": 4254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1416:0:14"
            },
            "scope": 4267,
            "src": "1335:146:14",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 4332,
        "src": "1252:231:14"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4269,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "1563:13:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4270,
            "nodeType": "InheritanceSpecifier",
            "src": "1563:13:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4271,
              "name": "SampleMother",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4214,
              "src": "1578:12:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleMother_$4214",
                "typeString": "contract SampleMother"
              }
            },
            "id": 4272,
            "nodeType": "InheritanceSpecifier",
            "src": "1578:12:14"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4273,
              "name": "SampleFather",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4267,
              "src": "1592:12:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleFather_$4267",
                "typeString": "contract SampleFather"
              }
            },
            "id": 4274,
            "nodeType": "InheritanceSpecifier",
            "src": "1592:12:14"
          }
        ],
        "contractDependencies": [
          74,
          4189,
          4214,
          4239,
          4267
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 4268,
          "nodeType": "StructuredDocumentation",
          "src": "1485:53:14",
          "text": " Child extends from mother, father (gramps)"
        },
        "fullyImplemented": true,
        "id": 4331,
        "linearizedBaseContracts": [
          4331,
          4267,
          4239,
          4214,
          4189,
          74
        ],
        "name": "SampleChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "237b5e96",
            "id": 4276,
            "mutability": "mutable",
            "name": "child",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4331,
            "src": "1609:20:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4275,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1609:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4306,
              "nodeType": "Block",
              "src": "1740:110:14",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4292,
                        "name": "_mother",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4278,
                        "src": "1770:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4289,
                        "name": "SampleMother",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4214,
                        "src": "1746:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleMother_$4214_$",
                          "typeString": "type(contract SampleMother)"
                        }
                      },
                      "id": 4291,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4213,
                      "src": "1746:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1746:32:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4294,
                  "nodeType": "ExpressionStatement",
                  "src": "1746:32:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4298,
                        "name": "_gramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4280,
                        "src": "1808:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4299,
                        "name": "_father",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4282,
                        "src": "1817:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4295,
                        "name": "SampleFather",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4267,
                        "src": "1784:12:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleFather_$4267_$",
                          "typeString": "type(contract SampleFather)"
                        }
                      },
                      "id": 4297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4266,
                      "src": "1784:23:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 4300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1784:41:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4301,
                  "nodeType": "ExpressionStatement",
                  "src": "1784:41:14"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4302,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4276,
                      "src": "1831:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4303,
                      "name": "_child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4284,
                      "src": "1839:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1831:14:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4305,
                  "nodeType": "ExpressionStatement",
                  "src": "1831:14:14"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "60a2da44",
            "id": 4307,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4287,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4286,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "1721:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1721:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4278,
                  "mutability": "mutable",
                  "name": "_mother",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4307,
                  "src": "1654:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4277,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1654:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4280,
                  "mutability": "mutable",
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4307,
                  "src": "1671:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4279,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1671:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4282,
                  "mutability": "mutable",
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4307,
                  "src": "1688:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4281,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1688:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4284,
                  "mutability": "mutable",
                  "name": "_child",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4307,
                  "src": "1705:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1705:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1653:67:14"
            },
            "returnParameters": {
              "id": 4288,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1740:0:14"
            },
            "scope": 4331,
            "src": "1634:216:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4213,
              4238
            ],
            "body": {
              "id": 4317,
              "nodeType": "Block",
              "src": "1945:5:14",
              "statements": []
            },
            "documentation": null,
            "functionSelector": "fe4b84df",
            "id": 4318,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4312,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4311,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "1889:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1889:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4315,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 4313,
                  "name": "SampleMother",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4214,
                  "src": "1910:12:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SampleMother_$4214",
                    "typeString": "contract SampleMother"
                  }
                },
                {
                  "contractScope": null,
                  "id": 4314,
                  "name": "SampleGramps",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4239,
                  "src": "1924:12:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SampleGramps_$4239",
                    "typeString": "contract SampleGramps"
                  }
                }
              ],
              "src": "1901:36:14"
            },
            "parameters": {
              "id": 4310,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4309,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4318,
                  "src": "1874:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4308,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1874:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1873:15:14"
            },
            "returnParameters": {
              "id": 4316,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1945:0:14"
            },
            "scope": 4331,
            "src": "1854:96:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4266
            ],
            "body": {
              "id": 4329,
              "nodeType": "Block",
              "src": "2050:5:14",
              "statements": []
            },
            "documentation": null,
            "functionSelector": "e4a30116",
            "id": 4330,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4325,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4324,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "2008:11:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2008:11:14"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4327,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 4326,
                  "name": "SampleFather",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4267,
                  "src": "2029:12:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SampleFather_$4267",
                    "typeString": "contract SampleFather"
                  }
                }
              ],
              "src": "2020:22:14"
            },
            "parameters": {
              "id": 4323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4320,
                  "mutability": "mutable",
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4330,
                  "src": "1974:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4319,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1974:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4322,
                  "mutability": "mutable",
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4330,
                  "src": "1991:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4321,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1991:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1973:34:14"
            },
            "returnParameters": {
              "id": 4328,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2050:0:14"
            },
            "scope": 4331,
            "src": "1954:101:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4332,
        "src": "1539:520:14"
      }
    ],
    "src": "0:2060:14"
  },
  "bytecode": "0x60806040523480156100115760006000fd5b50610017565b61055f806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100675760003560e01c80631c8aca3b1461006d5780634a6c9db61461008b5780638129fc1c146100ad578063e4a30116146100b7578063fa39851f146100f0578063fe4b84df1461010e57610067565b60006000fd5b61007561013d565b6040518082815260200191505060405180910390f35b610093610146565b604051808215151515815260200191505060405180910390f35b6100b5610159565b005b6100ee600480360360408110156100ce5760006000fd5b810190808035906020019092919080359060200190929190505050610281565b005b6100f86103ab565b6040518082815260200191505060405180910390f35b61013b600480360360208110156101255760006000fd5b81019080803590602001909291905050506103b4565b005b60356000505481565b603360009054906101000a900460ff1681565b600060019054906101000a900460ff168061017e575061017d6104dc63ffffffff16565b5b806101965750600060009054906101000a900460ff16155b15156101ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806104fc602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff16159050801561023f576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b6001603360006101000a81548160ff0219169083151502179055505b801561027d576000600060016101000a81548160ff0219169083151502179055505b505b565b600060019054906101000a900460ff16806102a657506102a56104dc63ffffffff16565b5b806102be5750600060009054906101000a900460ff16155b1515610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806104fc602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff161590508015610367576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b610376836103b463ffffffff16565b8160356000508190909055505b80156103a5576000600060016101000a81548160ff0219169083151502179055505b505b5050565b60346000505481565b600060019054906101000a900460ff16806103d957506103d86104dc63ffffffff16565b5b806103f15750600060009054906101000a900460ff16155b1515610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806104fc602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff16159050801561049a576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b6104a861015963ffffffff16565b8160346000508190909055505b80156104d7576000600060016101000a81548160ff0219169083151502179055505b505b50565b600060003090506000813b905060008114925050506104f85650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122014d3cfcf1dde48264c793209cc9ffd7835f37c2e54efdd282a7f31188064d17364736f6c634300060a0033",
  "deployedBytecode": "0x60806040523480156100115760006000fd5b50600436106100675760003560e01c80631c8aca3b1461006d5780634a6c9db61461008b5780638129fc1c146100ad578063e4a30116146100b7578063fa39851f146100f0578063fe4b84df1461010e57610067565b60006000fd5b61007561013d565b6040518082815260200191505060405180910390f35b610093610146565b604051808215151515815260200191505060405180910390f35b6100b5610159565b005b6100ee600480360360408110156100ce5760006000fd5b810190808035906020019092919080359060200190929190505050610281565b005b6100f86103ab565b6040518082815260200191505060405180910390f35b61013b600480360360208110156101255760006000fd5b81019080803590602001909291905050506103b4565b005b60356000505481565b603360009054906101000a900460ff1681565b600060019054906101000a900460ff168061017e575061017d6104dc63ffffffff16565b5b806101965750600060009054906101000a900460ff16155b15156101ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806104fc602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff16159050801561023f576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b6001603360006101000a81548160ff0219169083151502179055505b801561027d576000600060016101000a81548160ff0219169083151502179055505b505b565b600060019054906101000a900460ff16806102a657506102a56104dc63ffffffff16565b5b806102be5750600060009054906101000a900460ff16155b1515610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806104fc602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff161590508015610367576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b610376836103b463ffffffff16565b8160356000508190909055505b80156103a5576000600060016101000a81548160ff0219169083151502179055505b505b5050565b60346000505481565b600060019054906101000a900460ff16806103d957506103d86104dc63ffffffff16565b5b806103f15750600060009054906101000a900460ff16155b1515610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806104fc602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff16159050801561049a576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b6104a861015963ffffffff16565b8160346000508190909055505b80156104d7576000600060016101000a81548160ff0219169083151502179055505b505b50565b600060003090506000813b905060008114925050506104f85650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122014d3cfcf1dde48264c793209cc9ffd7835f37c2e54efdd282a7f31188064d17364736f6c634300060a0033",
  "compiler": {
    "name": "solc",
    "version": "0.6.10+commit.00c0fcaf.Emscripten.clang",
    "optimizer": {},
    "evmVersion": "constantinople"
  }
}
