{
  "contractName": "SampleMother",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "isHuman",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "mother",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506103f0806100206000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634a6c9db6146100675780638129fc1c14610096578063ed7dfee3146100ad578063fe4b84df146100d8575b600080fd5b34801561007357600080fd5b5061007c610105565b604051808215151515815260200191505060405180910390f35b3480156100a257600080fd5b506100ab610118565b005b3480156100b957600080fd5b506100c2610268565b6040518082815260200191505060405180910390f35b3480156100e457600080fd5b506101036004803603810190808035906020019092919050505061026e565b005b603360009054906101000a900460ff1681565b60008060019054906101000a900460ff168061013857506101376103b3565b5b8061014f57506000809054906101000a900460ff16155b15156101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055506001603360006101000a81548160ff02191690831515021790555080600060016101000a81548160ff02191690831515021790555050565b60345481565b60008060019054906101000a900460ff168061028e575061028d6103b3565b5b806102a557506000809054906101000a900460ff16155b151561033f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555061038e610118565b8160348190555080600060016101000a81548160ff0219169083151502179055505050565b600080303b905060008114915050905600a165627a7a72305820415bf4186fff180150b8ed5488d2bb82b606a0e6be94638c94811026675ac8b80029",
  "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634a6c9db6146100675780638129fc1c14610096578063ed7dfee3146100ad578063fe4b84df146100d8575b600080fd5b34801561007357600080fd5b5061007c610105565b604051808215151515815260200191505060405180910390f35b3480156100a257600080fd5b506100ab610118565b005b3480156100b957600080fd5b506100c2610268565b6040518082815260200191505060405180910390f35b3480156100e457600080fd5b506101036004803603810190808035906020019092919050505061026e565b005b603360009054906101000a900460ff1681565b60008060019054906101000a900460ff168061013857506101376103b3565b5b8061014f57506000809054906101000a900460ff16155b15156101e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055506001603360006101000a81548160ff02191690831515021790555080600060016101000a81548160ff02191690831515021790555050565b60345481565b60008060019054906101000a900460ff168061028e575061028d6103b3565b5b806102a557506000809054906101000a900460ff16155b151561033f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555061038e610118565b8160348190555080600060016101000a81548160ff0219169083151502179055505050565b600080303b905060008114915050905600a165627a7a72305820415bf4186fff180150b8ed5488d2bb82b606a0e6be94638c94811026675ac8b80029",
  "sourceMap": "638:193:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;638:193:12;;;;;;;",
  "deployedSourceMap": "638:193:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;471:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;;495:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;495:66:12;;;;;;694:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:21:12;;;;;;;;;;;;;;;;;;;;;;;720:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:109:12;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;;;;;;;;;;;;:::o;495:66::-;1129:20:0;1024:12;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1152:12;;;;;;;;;;;1129:35;;1185:4;1170:12;;:19;;;;;;;;;;;;;;;;;;1209:4;1195:11;;:18;;;;;;;;;;;;;;;;;;552:4:12;542:7;;:14;;;;;;;;;;;;;;;;;;1243:15:0;1228:12;;:30;;;;;;;;;;;;;;;;;;495:66:12;:::o;694:21::-;;;;:::o;720:109::-;1129:20:0;1024:12;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1152:12;;;;;;;;;;;1129:35;;1185:4;1170:12;;:19;;;;;;;;;;;;;;;;;;1209:4;1195:11;;:18;;;;;;;;;;;;;;;;;;780:24:12;:22;:24::i;:::-;819:5;810:6;:14;;;;1243:15:0;1228:12;;:30;;;;;;;;;;;;;;;;;;720:109:12;;:::o;1349:467:0:-;1396:4;1737:10;1782:7;1770:20;1764:26;;1810:1;1804:2;:7;1797:14;;1349:467;;:::o",
  "source": "pragma solidity ^0.4.24;\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 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 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 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 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",
  "sourcePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/MultipleInheritanceInitializableMocks.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/MultipleInheritanceInitializableMocks.sol",
    "exportedSymbols": {
      "SampleChild": [
        1849
      ],
      "SampleFather": [
        1809
      ],
      "SampleGramps": [
        1782
      ],
      "SampleHuman": [
        1734
      ],
      "SampleMother": [
        1758
      ]
    },
    "id": 1850,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1718,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:12"
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 1719,
        "nodeType": "ImportDirective",
        "scope": 1850,
        "sourceUnit": 56,
        "src": "26:30:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1720,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "453:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1721,
            "nodeType": "InheritanceSpecifier",
            "src": "453:13:12"
          }
        ],
        "contractDependencies": [
          55
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that is a human",
        "fullyImplemented": true,
        "id": 1734,
        "linearizedBaseContracts": [
          1734,
          55
        ],
        "name": "SampleHuman",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1723,
            "name": "isHuman",
            "nodeType": "VariableDeclaration",
            "scope": 1734,
            "src": "471:19:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1722,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "471:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1732,
              "nodeType": "Block",
              "src": "536:25:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1728,
                      "name": "isHuman",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1723,
                      "src": "542:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1729,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "552:4:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "542:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1731,
                  "nodeType": "ExpressionStatement",
                  "src": "542:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1733,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1726,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1725,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "517:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "517:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "514:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "536:0:12"
            },
            "scope": 1734,
            "src": "495:66:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "429:134:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1735,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "663:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1736,
            "nodeType": "InheritanceSpecifier",
            "src": "663:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1737,
              "name": "SampleHuman",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1734,
              "src": "678:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleHuman_$1734",
                "typeString": "contract SampleHuman"
              }
            },
            "id": 1738,
            "nodeType": "InheritanceSpecifier",
            "src": "678:11:12"
          }
        ],
        "contractDependencies": [
          55,
          1734
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that defines a field mother",
        "fullyImplemented": true,
        "id": 1758,
        "linearizedBaseContracts": [
          1758,
          1734,
          55
        ],
        "name": "SampleMother",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1740,
            "name": "mother",
            "nodeType": "VariableDeclaration",
            "scope": 1758,
            "src": "694:21:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1739,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "694:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1756,
              "nodeType": "Block",
              "src": "774:55:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1747,
                        "name": "SampleHuman",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1734,
                        "src": "780:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleHuman_$1734_$",
                          "typeString": "type(contract SampleHuman)"
                        }
                      },
                      "id": 1749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1733,
                      "src": "780:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "780:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1751,
                  "nodeType": "ExpressionStatement",
                  "src": "780:24:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1752,
                      "name": "mother",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1740,
                      "src": "810:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1753,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1742,
                      "src": "819:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "810:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1755,
                  "nodeType": "ExpressionStatement",
                  "src": "810:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1757,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1745,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1744,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "755:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "755:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1742,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1757,
                  "src": "740:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1741,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "740:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "739:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1746,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "774:0:12"
            },
            "scope": 1758,
            "src": "720:109:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "638:193:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1759,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "931:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1760,
            "nodeType": "InheritanceSpecifier",
            "src": "931:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1761,
              "name": "SampleHuman",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1734,
              "src": "946:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleHuman_$1734",
                "typeString": "contract SampleHuman"
              }
            },
            "id": 1762,
            "nodeType": "InheritanceSpecifier",
            "src": "946:11:12"
          }
        ],
        "contractDependencies": [
          55,
          1734
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that defines a field gramps",
        "fullyImplemented": true,
        "id": 1782,
        "linearizedBaseContracts": [
          1782,
          1734,
          55
        ],
        "name": "SampleGramps",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1764,
            "name": "gramps",
            "nodeType": "VariableDeclaration",
            "scope": 1782,
            "src": "962:21:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1763,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "962:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1780,
              "nodeType": "Block",
              "src": "1042:55:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1771,
                        "name": "SampleHuman",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1734,
                        "src": "1048:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleHuman_$1734_$",
                          "typeString": "type(contract SampleHuman)"
                        }
                      },
                      "id": 1773,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1733,
                      "src": "1048:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1048:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1775,
                  "nodeType": "ExpressionStatement",
                  "src": "1048:24:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1776,
                      "name": "gramps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1764,
                      "src": "1078:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1777,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1766,
                      "src": "1087:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1078:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1779,
                  "nodeType": "ExpressionStatement",
                  "src": "1078:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1781,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1769,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1768,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "1023:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1023:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1766,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1781,
                  "src": "1008:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1008:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1007:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1770,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1042:0:12"
            },
            "scope": 1782,
            "src": "988:109:12",
            "stateMutability": "nonpayable",
            "superFunction": 1757,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "906:193:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1783,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "1223:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1784,
            "nodeType": "InheritanceSpecifier",
            "src": "1223:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1785,
              "name": "SampleGramps",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1782,
              "src": "1238:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleGramps_$1782",
                "typeString": "contract SampleGramps"
              }
            },
            "id": 1786,
            "nodeType": "InheritanceSpecifier",
            "src": "1238:12:12"
          }
        ],
        "contractDependencies": [
          55,
          1734,
          1782
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that defines a field father and extends from gramps",
        "fullyImplemented": true,
        "id": 1809,
        "linearizedBaseContracts": [
          1809,
          1782,
          1734,
          55
        ],
        "name": "SampleFather",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1788,
            "name": "father",
            "nodeType": "VariableDeclaration",
            "scope": 1809,
            "src": "1255:21:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1787,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1255:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1807,
              "nodeType": "Block",
              "src": "1354:65:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1800,
                        "name": "_gramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "1384:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1797,
                        "name": "SampleGramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1782,
                        "src": "1360:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleGramps_$1782_$",
                          "typeString": "type(contract SampleGramps)"
                        }
                      },
                      "id": 1799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1781,
                      "src": "1360:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1360:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1802,
                  "nodeType": "ExpressionStatement",
                  "src": "1360:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1803,
                      "name": "father",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1788,
                      "src": "1398:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1804,
                      "name": "_father",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1792,
                      "src": "1407:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1398:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1806,
                  "nodeType": "ExpressionStatement",
                  "src": "1398:16:12"
                }
              ]
            },
            "documentation": null,
            "id": 1808,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1795,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1794,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "1335:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1335:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1790,
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "scope": 1808,
                  "src": "1301:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1792,
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "scope": 1808,
                  "src": "1318:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1318:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1300:34:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1796,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1354:0:12"
            },
            "scope": 1809,
            "src": "1281:138:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "1198:223:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1810,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "1501:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1811,
            "nodeType": "InheritanceSpecifier",
            "src": "1501:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1812,
              "name": "SampleMother",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1758,
              "src": "1516:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleMother_$1758",
                "typeString": "contract SampleMother"
              }
            },
            "id": 1813,
            "nodeType": "InheritanceSpecifier",
            "src": "1516:12:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1814,
              "name": "SampleFather",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1809,
              "src": "1530:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleFather_$1809",
                "typeString": "contract SampleFather"
              }
            },
            "id": 1815,
            "nodeType": "InheritanceSpecifier",
            "src": "1530:12:12"
          }
        ],
        "contractDependencies": [
          55,
          1734,
          1758,
          1782,
          1809
        ],
        "contractKind": "contract",
        "documentation": "Child extends from mother, father (gramps)",
        "fullyImplemented": true,
        "id": 1849,
        "linearizedBaseContracts": [
          1849,
          1809,
          1782,
          1758,
          1734,
          55
        ],
        "name": "SampleChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1817,
            "name": "child",
            "nodeType": "VariableDeclaration",
            "scope": 1849,
            "src": "1547:20:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1816,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1547:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1847,
              "nodeType": "Block",
              "src": "1678:110:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1833,
                        "name": "_mother",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1819,
                        "src": "1708:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1830,
                        "name": "SampleMother",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1758,
                        "src": "1684:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleMother_$1758_$",
                          "typeString": "type(contract SampleMother)"
                        }
                      },
                      "id": 1832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1757,
                      "src": "1684:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1684:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1835,
                  "nodeType": "ExpressionStatement",
                  "src": "1684:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1839,
                        "name": "_gramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1821,
                        "src": "1746:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1840,
                        "name": "_father",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1823,
                        "src": "1755:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1836,
                        "name": "SampleFather",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1809,
                        "src": "1722:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleFather_$1809_$",
                          "typeString": "type(contract SampleFather)"
                        }
                      },
                      "id": 1838,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1808,
                      "src": "1722:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 1841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1722:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1842,
                  "nodeType": "ExpressionStatement",
                  "src": "1722:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1843,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1817,
                      "src": "1769:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1844,
                      "name": "_child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "1777:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1769:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1846,
                  "nodeType": "ExpressionStatement",
                  "src": "1769:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1848,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1828,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1827,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "1659:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1659:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1819,
                  "name": "_mother",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1592:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1818,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1592:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1821,
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1609:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1820,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1823,
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1626:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1822,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1626:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1825,
                  "name": "_child",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1643:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1824,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1643:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1591:67:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1829,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1678:0:12"
            },
            "scope": 1849,
            "src": "1572:216:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "1477:313:12"
      }
    ],
    "src": "0:1791:12"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/MultipleInheritanceInitializableMocks.sol",
    "exportedSymbols": {
      "SampleChild": [
        1849
      ],
      "SampleFather": [
        1809
      ],
      "SampleGramps": [
        1782
      ],
      "SampleHuman": [
        1734
      ],
      "SampleMother": [
        1758
      ]
    },
    "id": 1850,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1718,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:12"
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 1719,
        "nodeType": "ImportDirective",
        "scope": 1850,
        "sourceUnit": 56,
        "src": "26:30:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1720,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "453:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1721,
            "nodeType": "InheritanceSpecifier",
            "src": "453:13:12"
          }
        ],
        "contractDependencies": [
          55
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that is a human",
        "fullyImplemented": true,
        "id": 1734,
        "linearizedBaseContracts": [
          1734,
          55
        ],
        "name": "SampleHuman",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1723,
            "name": "isHuman",
            "nodeType": "VariableDeclaration",
            "scope": 1734,
            "src": "471:19:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 1722,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "471:4:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1732,
              "nodeType": "Block",
              "src": "536:25:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1728,
                      "name": "isHuman",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1723,
                      "src": "542:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1729,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "552:4:12",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "542:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1731,
                  "nodeType": "ExpressionStatement",
                  "src": "542:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1733,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1726,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1725,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "517:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "517:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "514:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "536:0:12"
            },
            "scope": 1734,
            "src": "495:66:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "429:134:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1735,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "663:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1736,
            "nodeType": "InheritanceSpecifier",
            "src": "663:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1737,
              "name": "SampleHuman",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1734,
              "src": "678:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleHuman_$1734",
                "typeString": "contract SampleHuman"
              }
            },
            "id": 1738,
            "nodeType": "InheritanceSpecifier",
            "src": "678:11:12"
          }
        ],
        "contractDependencies": [
          55,
          1734
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that defines a field mother",
        "fullyImplemented": true,
        "id": 1758,
        "linearizedBaseContracts": [
          1758,
          1734,
          55
        ],
        "name": "SampleMother",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1740,
            "name": "mother",
            "nodeType": "VariableDeclaration",
            "scope": 1758,
            "src": "694:21:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1739,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "694:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1756,
              "nodeType": "Block",
              "src": "774:55:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1747,
                        "name": "SampleHuman",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1734,
                        "src": "780:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleHuman_$1734_$",
                          "typeString": "type(contract SampleHuman)"
                        }
                      },
                      "id": 1749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1733,
                      "src": "780:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "780:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1751,
                  "nodeType": "ExpressionStatement",
                  "src": "780:24:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1752,
                      "name": "mother",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1740,
                      "src": "810:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1753,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1742,
                      "src": "819:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "810:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1755,
                  "nodeType": "ExpressionStatement",
                  "src": "810:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1757,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1745,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1744,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "755:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "755:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1742,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1757,
                  "src": "740:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1741,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "740:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "739:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1746,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "774:0:12"
            },
            "scope": 1758,
            "src": "720:109:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "638:193:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1759,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "931:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1760,
            "nodeType": "InheritanceSpecifier",
            "src": "931:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1761,
              "name": "SampleHuman",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1734,
              "src": "946:11:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleHuman_$1734",
                "typeString": "contract SampleHuman"
              }
            },
            "id": 1762,
            "nodeType": "InheritanceSpecifier",
            "src": "946:11:12"
          }
        ],
        "contractDependencies": [
          55,
          1734
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that defines a field gramps",
        "fullyImplemented": true,
        "id": 1782,
        "linearizedBaseContracts": [
          1782,
          1734,
          55
        ],
        "name": "SampleGramps",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1764,
            "name": "gramps",
            "nodeType": "VariableDeclaration",
            "scope": 1782,
            "src": "962:21:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1763,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "962:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1780,
              "nodeType": "Block",
              "src": "1042:55:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1771,
                        "name": "SampleHuman",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1734,
                        "src": "1048:11:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleHuman_$1734_$",
                          "typeString": "type(contract SampleHuman)"
                        }
                      },
                      "id": 1773,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1733,
                      "src": "1048:22:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 1774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1048:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1775,
                  "nodeType": "ExpressionStatement",
                  "src": "1048:24:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1776,
                      "name": "gramps",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1764,
                      "src": "1078:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1777,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1766,
                      "src": "1087:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1078:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1779,
                  "nodeType": "ExpressionStatement",
                  "src": "1078:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1781,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1769,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1768,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "1023:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1023:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1766,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1781,
                  "src": "1008:13:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1008:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1007:15:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1770,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1042:0:12"
            },
            "scope": 1782,
            "src": "988:109:12",
            "stateMutability": "nonpayable",
            "superFunction": 1757,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "906:193:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1783,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "1223:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1784,
            "nodeType": "InheritanceSpecifier",
            "src": "1223:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1785,
              "name": "SampleGramps",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1782,
              "src": "1238:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleGramps_$1782",
                "typeString": "contract SampleGramps"
              }
            },
            "id": 1786,
            "nodeType": "InheritanceSpecifier",
            "src": "1238:12:12"
          }
        ],
        "contractDependencies": [
          55,
          1734,
          1782
        ],
        "contractKind": "contract",
        "documentation": "Sample base intializable contract that defines a field father and extends from gramps",
        "fullyImplemented": true,
        "id": 1809,
        "linearizedBaseContracts": [
          1809,
          1782,
          1734,
          55
        ],
        "name": "SampleFather",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1788,
            "name": "father",
            "nodeType": "VariableDeclaration",
            "scope": 1809,
            "src": "1255:21:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1787,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1255:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1807,
              "nodeType": "Block",
              "src": "1354:65:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1800,
                        "name": "_gramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1790,
                        "src": "1384:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1797,
                        "name": "SampleGramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1782,
                        "src": "1360:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleGramps_$1782_$",
                          "typeString": "type(contract SampleGramps)"
                        }
                      },
                      "id": 1799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1781,
                      "src": "1360:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1360:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1802,
                  "nodeType": "ExpressionStatement",
                  "src": "1360:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1803,
                      "name": "father",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1788,
                      "src": "1398:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1804,
                      "name": "_father",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1792,
                      "src": "1407:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1398:16:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1806,
                  "nodeType": "ExpressionStatement",
                  "src": "1398:16:12"
                }
              ]
            },
            "documentation": null,
            "id": 1808,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1795,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1794,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "1335:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1335:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1790,
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "scope": 1808,
                  "src": "1301:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1789,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1792,
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "scope": 1808,
                  "src": "1318:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1318:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1300:34:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1796,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1354:0:12"
            },
            "scope": 1809,
            "src": "1281:138:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "1198:223:12"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1810,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 55,
              "src": "1501:13:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$55",
                "typeString": "contract Initializable"
              }
            },
            "id": 1811,
            "nodeType": "InheritanceSpecifier",
            "src": "1501:13:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1812,
              "name": "SampleMother",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1758,
              "src": "1516:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleMother_$1758",
                "typeString": "contract SampleMother"
              }
            },
            "id": 1813,
            "nodeType": "InheritanceSpecifier",
            "src": "1516:12:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1814,
              "name": "SampleFather",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1809,
              "src": "1530:12:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SampleFather_$1809",
                "typeString": "contract SampleFather"
              }
            },
            "id": 1815,
            "nodeType": "InheritanceSpecifier",
            "src": "1530:12:12"
          }
        ],
        "contractDependencies": [
          55,
          1734,
          1758,
          1782,
          1809
        ],
        "contractKind": "contract",
        "documentation": "Child extends from mother, father (gramps)",
        "fullyImplemented": true,
        "id": 1849,
        "linearizedBaseContracts": [
          1849,
          1809,
          1782,
          1758,
          1734,
          55
        ],
        "name": "SampleChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1817,
            "name": "child",
            "nodeType": "VariableDeclaration",
            "scope": 1849,
            "src": "1547:20:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1816,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1547:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1847,
              "nodeType": "Block",
              "src": "1678:110:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1833,
                        "name": "_mother",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1819,
                        "src": "1708:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1830,
                        "name": "SampleMother",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1758,
                        "src": "1684:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleMother_$1758_$",
                          "typeString": "type(contract SampleMother)"
                        }
                      },
                      "id": 1832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1757,
                      "src": "1684:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1684:32:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1835,
                  "nodeType": "ExpressionStatement",
                  "src": "1684:32:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1839,
                        "name": "_gramps",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1821,
                        "src": "1746:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1840,
                        "name": "_father",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1823,
                        "src": "1755:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1836,
                        "name": "SampleFather",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1809,
                        "src": "1722:12:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SampleFather_$1809_$",
                          "typeString": "type(contract SampleFather)"
                        }
                      },
                      "id": 1838,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1808,
                      "src": "1722:23:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 1841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1722:41:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1842,
                  "nodeType": "ExpressionStatement",
                  "src": "1722:41:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1843,
                      "name": "child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1817,
                      "src": "1769:5:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1844,
                      "name": "_child",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "1777:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1769:14:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1846,
                  "nodeType": "ExpressionStatement",
                  "src": "1769:14:12"
                }
              ]
            },
            "documentation": null,
            "id": 1848,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 1828,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 1827,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 36,
                  "src": "1659:11:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1659:11:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1819,
                  "name": "_mother",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1592:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1818,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1592:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1821,
                  "name": "_gramps",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1609:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1820,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1609:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1823,
                  "name": "_father",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1626:15:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1822,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1626:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1825,
                  "name": "_child",
                  "nodeType": "VariableDeclaration",
                  "scope": 1848,
                  "src": "1643:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1824,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1643:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1591:67:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 1829,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1678:0:12"
            },
            "scope": 1849,
            "src": "1572:216:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1850,
        "src": "1477:313:12"
      }
    ],
    "src": "0:1791:12"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-02-15T10:15:15.376Z"
}