{
  "contractName": "StorageMockChainChild",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "a3",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "a4",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "slots",
      "outputs": [
        {
          "name": "baseSlot",
          "type": "uint256"
        },
        {
          "name": "a1Slot",
          "type": "uint256"
        },
        {
          "name": "a3Slot",
          "type": "uint256"
        },
        {
          "name": "b1Slot",
          "type": "uint256"
        },
        {
          "name": "childSlot",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610153806100206000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806348547d691461005c5780639426eef8146100a3578063f74ea418146100ce575b600080fd5b34801561006857600080fd5b506100716100f9565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156100af57600080fd5b506100b861011b565b6040518082815260200191505060405180910390f35b3480156100da57600080fd5b506100e3610121565b6040518082815260200191505060405180910390f35b6000806000806000809450600193506003925060059150600790509091929394565b60035481565b600454815600a165627a7a723058208be893ffd066350b1929b5173245477fbbfa4ed07b01d662959c5d41763184220029",
  "deployedBytecode": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806348547d691461005c5780639426eef8146100a3578063f74ea418146100ce575b600080fd5b34801561006857600080fd5b506100716100f9565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b3480156100af57600080fd5b506100b861011b565b6040518082815260200191505060405180910390f35b3480156100da57600080fd5b506100e3610121565b6040518082815260200191505060405180910390f35b6000806000806000809450600193506003925060059150600790509091929394565b60035481565b600454815600a165627a7a723058208be893ffd066350b1929b5173245477fbbfa4ed07b01d662959c5d41763184220029",
  "sourceMap": "863:383:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;863:383:17;;;;;;;",
  "deployedSourceMap": "863:383:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:278:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;718:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;718:17:17;;;;;;;;;;;;;;;;;;;;;;;739;;8:9:-1;5:2;;;30:1;27;20:12;5:2;739:17:17;;;;;;;;;;;;;;;;;;;;;;;966:278;1003:16;1021:14;1037;1053;1069:17;1123:9;1111:21;;1149:7;1139:17;;1173:7;1163:17;;1197:7;1187:17;;1224:10;1211:23;;1103:137;;;;;:::o;718:17::-;;;;:::o;739:::-;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./StorageMocks.sol\";\nimport \"mock-dependency/contracts/DependencyStorageMock.sol\";\n\ncontract StorageMockWithReferences {\n  StorageMockWithEnums.MyEnum internal my_enum;\n  StorageMockWithStructs.MyStruct internal my_struct;\n  SimpleStorageMock internal my_contract;\n}\n\ncontract StorageMockWithNodeModulesReferences {\n  DependencyStorageMock.MyEnum internal my_enum;\n  DependencyStorageMock.MyStruct internal my_struct;\n  DependencyStorageMock internal my_contract;\n}\n\ncontract StorageMockChainBase {\n  uint256 internal base;\n}\n\ncontract StorageMockChainA1 is StorageMockChainBase {\n  uint256 internal a1;\n  uint256 internal a2;\n}\n\ncontract StorageMockChainA2 is StorageMockChainA1 {\n  uint256 public a3;\n  uint256 public a4;\n}\n\ncontract StorageMockChainB is StorageMockChainBase {\n  uint256 internal b1;\n  uint256 internal b2;\n}\n\ncontract StorageMockChainChild is StorageMockChainA2, StorageMockChainB {\n  uint256 internal child;\n\n  function slots() public pure returns(uint256 baseSlot, uint256 a1Slot, uint256 a3Slot, uint256 b1Slot, uint256 childSlot) {\n    assembly {\n      baseSlot := base_slot\n      a1Slot := a1_slot\n      a3Slot := a3_slot\n      b1Slot := b1_slot\n      childSlot := child_slot\n    }\n  }\n}",
  "sourcePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/StorageMocks2.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/StorageMocks2.sol",
    "exportedSymbols": {
      "StorageMockChainA1": [
        2327
      ],
      "StorageMockChainA2": [
        2334
      ],
      "StorageMockChainB": [
        2341
      ],
      "StorageMockChainBase": [
        2320
      ],
      "StorageMockChainChild": [
        2363
      ],
      "StorageMockWithNodeModulesReferences": [
        2317
      ],
      "StorageMockWithReferences": [
        2310
      ]
    },
    "id": 2364,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2301,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:17"
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/StorageMocks.sol",
        "file": "./StorageMocks.sol",
        "id": 2302,
        "nodeType": "ImportDirective",
        "scope": 2364,
        "sourceUnit": 2300,
        "src": "26:28:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "mock-dependency/contracts/DependencyStorageMock.sol",
        "file": "mock-dependency/contracts/DependencyStorageMock.sol",
        "id": 2303,
        "nodeType": "ImportDirective",
        "scope": 2364,
        "sourceUnit": 3038,
        "src": "55:61:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2310,
        "linearizedBaseContracts": [
          2310
        ],
        "name": "StorageMockWithReferences",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2305,
            "name": "my_enum",
            "nodeType": "VariableDeclaration",
            "scope": 2310,
            "src": "157:44:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_enum$_MyEnum_$2253",
              "typeString": "enum StorageMockWithEnums.MyEnum"
            },
            "typeName": {
              "contractScope": null,
              "id": 2304,
              "name": "StorageMockWithEnums.MyEnum",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2253,
              "src": "157:27:17",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_MyEnum_$2253",
                "typeString": "enum StorageMockWithEnums.MyEnum"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2307,
            "name": "my_struct",
            "nodeType": "VariableDeclaration",
            "scope": 2310,
            "src": "205:50:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_MyStruct_$2236_storage",
              "typeString": "struct StorageMockWithStructs.MyStruct"
            },
            "typeName": {
              "contractScope": null,
              "id": 2306,
              "name": "StorageMockWithStructs.MyStruct",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2236,
              "src": "205:31:17",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MyStruct_$2236_storage_ptr",
                "typeString": "struct StorageMockWithStructs.MyStruct"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2309,
            "name": "my_contract",
            "nodeType": "VariableDeclaration",
            "scope": 2310,
            "src": "259:38:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SimpleStorageMock_$2115",
              "typeString": "contract SimpleStorageMock"
            },
            "typeName": {
              "contractScope": null,
              "id": 2308,
              "name": "SimpleStorageMock",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2115,
              "src": "259:17:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SimpleStorageMock_$2115",
                "typeString": "contract SimpleStorageMock"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "118:182:17"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2317,
        "linearizedBaseContracts": [
          2317
        ],
        "name": "StorageMockWithNodeModulesReferences",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2312,
            "name": "my_enum",
            "nodeType": "VariableDeclaration",
            "scope": 2317,
            "src": "352:45:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_enum$_MyEnum_$3033",
              "typeString": "enum DependencyStorageMock.MyEnum"
            },
            "typeName": {
              "contractScope": null,
              "id": 2311,
              "name": "DependencyStorageMock.MyEnum",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3033,
              "src": "352:28:17",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_MyEnum_$3033",
                "typeString": "enum DependencyStorageMock.MyEnum"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2314,
            "name": "my_struct",
            "nodeType": "VariableDeclaration",
            "scope": 2317,
            "src": "401:49:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_MyStruct_$3036_storage",
              "typeString": "struct DependencyStorageMock.MyStruct"
            },
            "typeName": {
              "contractScope": null,
              "id": 2313,
              "name": "DependencyStorageMock.MyStruct",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3036,
              "src": "401:30:17",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MyStruct_$3036_storage_ptr",
                "typeString": "struct DependencyStorageMock.MyStruct"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2316,
            "name": "my_contract",
            "nodeType": "VariableDeclaration",
            "scope": 2317,
            "src": "454:42:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DependencyStorageMock_$3037",
              "typeString": "contract DependencyStorageMock"
            },
            "typeName": {
              "contractScope": null,
              "id": 2315,
              "name": "DependencyStorageMock",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3037,
              "src": "454:21:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DependencyStorageMock_$3037",
                "typeString": "contract DependencyStorageMock"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "302:197:17"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2320,
        "linearizedBaseContracts": [
          2320
        ],
        "name": "StorageMockChainBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2319,
            "name": "base",
            "nodeType": "VariableDeclaration",
            "scope": 2320,
            "src": "535:21:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2318,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "535:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "501:58:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2321,
              "name": "StorageMockChainBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2320,
              "src": "592:20:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainBase_$2320",
                "typeString": "contract StorageMockChainBase"
              }
            },
            "id": 2322,
            "nodeType": "InheritanceSpecifier",
            "src": "592:20:17"
          }
        ],
        "contractDependencies": [
          2320
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2327,
        "linearizedBaseContracts": [
          2327,
          2320
        ],
        "name": "StorageMockChainA1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2324,
            "name": "a1",
            "nodeType": "VariableDeclaration",
            "scope": 2327,
            "src": "617:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2323,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "617:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2326,
            "name": "a2",
            "nodeType": "VariableDeclaration",
            "scope": 2327,
            "src": "640:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2325,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "640:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "561:101:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2328,
              "name": "StorageMockChainA1",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2327,
              "src": "695:18:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainA1_$2327",
                "typeString": "contract StorageMockChainA1"
              }
            },
            "id": 2329,
            "nodeType": "InheritanceSpecifier",
            "src": "695:18:17"
          }
        ],
        "contractDependencies": [
          2320,
          2327
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2334,
        "linearizedBaseContracts": [
          2334,
          2327,
          2320
        ],
        "name": "StorageMockChainA2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2331,
            "name": "a3",
            "nodeType": "VariableDeclaration",
            "scope": 2334,
            "src": "718:17:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2330,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "718:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2333,
            "name": "a4",
            "nodeType": "VariableDeclaration",
            "scope": 2334,
            "src": "739:17:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2332,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "739:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          }
        ],
        "scope": 2364,
        "src": "664:95:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2335,
              "name": "StorageMockChainBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2320,
              "src": "791:20:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainBase_$2320",
                "typeString": "contract StorageMockChainBase"
              }
            },
            "id": 2336,
            "nodeType": "InheritanceSpecifier",
            "src": "791:20:17"
          }
        ],
        "contractDependencies": [
          2320
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2341,
        "linearizedBaseContracts": [
          2341,
          2320
        ],
        "name": "StorageMockChainB",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2338,
            "name": "b1",
            "nodeType": "VariableDeclaration",
            "scope": 2341,
            "src": "816:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2337,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "816:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2340,
            "name": "b2",
            "nodeType": "VariableDeclaration",
            "scope": 2341,
            "src": "839:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2339,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "839:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "761:100:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2342,
              "name": "StorageMockChainA2",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2334,
              "src": "897:18:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainA2_$2334",
                "typeString": "contract StorageMockChainA2"
              }
            },
            "id": 2343,
            "nodeType": "InheritanceSpecifier",
            "src": "897:18:17"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2344,
              "name": "StorageMockChainB",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2341,
              "src": "917:17:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainB_$2341",
                "typeString": "contract StorageMockChainB"
              }
            },
            "id": 2345,
            "nodeType": "InheritanceSpecifier",
            "src": "917:17:17"
          }
        ],
        "contractDependencies": [
          2320,
          2327,
          2334,
          2341
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2363,
        "linearizedBaseContracts": [
          2363,
          2341,
          2334,
          2327,
          2320
        ],
        "name": "StorageMockChainChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2347,
            "name": "child",
            "nodeType": "VariableDeclaration",
            "scope": 2363,
            "src": "939:22:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2346,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "939:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2361,
              "nodeType": "Block",
              "src": "1088:156:17",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "base_slot": {
                        "declaration": 2319,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1123:9:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "baseSlot": {
                        "declaration": 2350,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1111:8:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a3_slot": {
                        "declaration": 2331,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1173:7:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a3Slot": {
                        "declaration": 2354,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1163:6:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a1_slot": {
                        "declaration": 2324,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1149:7:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a1Slot": {
                        "declaration": 2352,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1139:6:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "b1_slot": {
                        "declaration": 2338,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1197:7:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "b1Slot": {
                        "declaration": 2356,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1187:6:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "child_slot": {
                        "declaration": 2347,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1224:10:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "childSlot": {
                        "declaration": 2358,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1211:9:17",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 2360,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    baseSlot := base_slot\n    a1Slot := a1_slot\n    a3Slot := a3_slot\n    b1Slot := b1_slot\n    childSlot := child_slot\n}",
                  "src": "1094:150:17"
                }
              ]
            },
            "documentation": null,
            "id": 2362,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "slots",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "980:2:17"
            },
            "payable": false,
            "returnParameters": {
              "id": 2359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2350,
                  "name": "baseSlot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1003:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2349,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2352,
                  "name": "a1Slot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1021:14:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2354,
                  "name": "a3Slot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1037:14:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2356,
                  "name": "b1Slot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1053:14:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2355,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2358,
                  "name": "childSlot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1069:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2357,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1002:85:17"
            },
            "scope": 2363,
            "src": "966:278:17",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2364,
        "src": "863:383:17"
      }
    ],
    "src": "0:1246:17"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/StorageMocks2.sol",
    "exportedSymbols": {
      "StorageMockChainA1": [
        2327
      ],
      "StorageMockChainA2": [
        2334
      ],
      "StorageMockChainB": [
        2341
      ],
      "StorageMockChainBase": [
        2320
      ],
      "StorageMockChainChild": [
        2363
      ],
      "StorageMockWithNodeModulesReferences": [
        2317
      ],
      "StorageMockWithReferences": [
        2310
      ]
    },
    "id": 2364,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2301,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:17"
      },
      {
        "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/StorageMocks.sol",
        "file": "./StorageMocks.sol",
        "id": 2302,
        "nodeType": "ImportDirective",
        "scope": 2364,
        "sourceUnit": 2300,
        "src": "26:28:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "mock-dependency/contracts/DependencyStorageMock.sol",
        "file": "mock-dependency/contracts/DependencyStorageMock.sol",
        "id": 2303,
        "nodeType": "ImportDirective",
        "scope": 2364,
        "sourceUnit": 3038,
        "src": "55:61:17",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2310,
        "linearizedBaseContracts": [
          2310
        ],
        "name": "StorageMockWithReferences",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2305,
            "name": "my_enum",
            "nodeType": "VariableDeclaration",
            "scope": 2310,
            "src": "157:44:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_enum$_MyEnum_$2253",
              "typeString": "enum StorageMockWithEnums.MyEnum"
            },
            "typeName": {
              "contractScope": null,
              "id": 2304,
              "name": "StorageMockWithEnums.MyEnum",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2253,
              "src": "157:27:17",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_MyEnum_$2253",
                "typeString": "enum StorageMockWithEnums.MyEnum"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2307,
            "name": "my_struct",
            "nodeType": "VariableDeclaration",
            "scope": 2310,
            "src": "205:50:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_MyStruct_$2236_storage",
              "typeString": "struct StorageMockWithStructs.MyStruct"
            },
            "typeName": {
              "contractScope": null,
              "id": 2306,
              "name": "StorageMockWithStructs.MyStruct",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2236,
              "src": "205:31:17",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MyStruct_$2236_storage_ptr",
                "typeString": "struct StorageMockWithStructs.MyStruct"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2309,
            "name": "my_contract",
            "nodeType": "VariableDeclaration",
            "scope": 2310,
            "src": "259:38:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_SimpleStorageMock_$2115",
              "typeString": "contract SimpleStorageMock"
            },
            "typeName": {
              "contractScope": null,
              "id": 2308,
              "name": "SimpleStorageMock",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2115,
              "src": "259:17:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SimpleStorageMock_$2115",
                "typeString": "contract SimpleStorageMock"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "118:182:17"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2317,
        "linearizedBaseContracts": [
          2317
        ],
        "name": "StorageMockWithNodeModulesReferences",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2312,
            "name": "my_enum",
            "nodeType": "VariableDeclaration",
            "scope": 2317,
            "src": "352:45:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_enum$_MyEnum_$3033",
              "typeString": "enum DependencyStorageMock.MyEnum"
            },
            "typeName": {
              "contractScope": null,
              "id": 2311,
              "name": "DependencyStorageMock.MyEnum",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3033,
              "src": "352:28:17",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_MyEnum_$3033",
                "typeString": "enum DependencyStorageMock.MyEnum"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2314,
            "name": "my_struct",
            "nodeType": "VariableDeclaration",
            "scope": 2317,
            "src": "401:49:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_MyStruct_$3036_storage",
              "typeString": "struct DependencyStorageMock.MyStruct"
            },
            "typeName": {
              "contractScope": null,
              "id": 2313,
              "name": "DependencyStorageMock.MyStruct",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3036,
              "src": "401:30:17",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MyStruct_$3036_storage_ptr",
                "typeString": "struct DependencyStorageMock.MyStruct"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2316,
            "name": "my_contract",
            "nodeType": "VariableDeclaration",
            "scope": 2317,
            "src": "454:42:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DependencyStorageMock_$3037",
              "typeString": "contract DependencyStorageMock"
            },
            "typeName": {
              "contractScope": null,
              "id": 2315,
              "name": "DependencyStorageMock",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3037,
              "src": "454:21:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DependencyStorageMock_$3037",
                "typeString": "contract DependencyStorageMock"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "302:197:17"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2320,
        "linearizedBaseContracts": [
          2320
        ],
        "name": "StorageMockChainBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2319,
            "name": "base",
            "nodeType": "VariableDeclaration",
            "scope": 2320,
            "src": "535:21:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2318,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "535:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "501:58:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2321,
              "name": "StorageMockChainBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2320,
              "src": "592:20:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainBase_$2320",
                "typeString": "contract StorageMockChainBase"
              }
            },
            "id": 2322,
            "nodeType": "InheritanceSpecifier",
            "src": "592:20:17"
          }
        ],
        "contractDependencies": [
          2320
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2327,
        "linearizedBaseContracts": [
          2327,
          2320
        ],
        "name": "StorageMockChainA1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2324,
            "name": "a1",
            "nodeType": "VariableDeclaration",
            "scope": 2327,
            "src": "617:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2323,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "617:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2326,
            "name": "a2",
            "nodeType": "VariableDeclaration",
            "scope": 2327,
            "src": "640:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2325,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "640:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "561:101:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2328,
              "name": "StorageMockChainA1",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2327,
              "src": "695:18:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainA1_$2327",
                "typeString": "contract StorageMockChainA1"
              }
            },
            "id": 2329,
            "nodeType": "InheritanceSpecifier",
            "src": "695:18:17"
          }
        ],
        "contractDependencies": [
          2320,
          2327
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2334,
        "linearizedBaseContracts": [
          2334,
          2327,
          2320
        ],
        "name": "StorageMockChainA2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2331,
            "name": "a3",
            "nodeType": "VariableDeclaration",
            "scope": 2334,
            "src": "718:17:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2330,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "718:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2333,
            "name": "a4",
            "nodeType": "VariableDeclaration",
            "scope": 2334,
            "src": "739:17:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2332,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "739:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          }
        ],
        "scope": 2364,
        "src": "664:95:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2335,
              "name": "StorageMockChainBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2320,
              "src": "791:20:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainBase_$2320",
                "typeString": "contract StorageMockChainBase"
              }
            },
            "id": 2336,
            "nodeType": "InheritanceSpecifier",
            "src": "791:20:17"
          }
        ],
        "contractDependencies": [
          2320
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2341,
        "linearizedBaseContracts": [
          2341,
          2320
        ],
        "name": "StorageMockChainB",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2338,
            "name": "b1",
            "nodeType": "VariableDeclaration",
            "scope": 2341,
            "src": "816:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2337,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "816:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2340,
            "name": "b2",
            "nodeType": "VariableDeclaration",
            "scope": 2341,
            "src": "839:19:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2339,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "839:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 2364,
        "src": "761:100:17"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2342,
              "name": "StorageMockChainA2",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2334,
              "src": "897:18:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainA2_$2334",
                "typeString": "contract StorageMockChainA2"
              }
            },
            "id": 2343,
            "nodeType": "InheritanceSpecifier",
            "src": "897:18:17"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2344,
              "name": "StorageMockChainB",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2341,
              "src": "917:17:17",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StorageMockChainB_$2341",
                "typeString": "contract StorageMockChainB"
              }
            },
            "id": 2345,
            "nodeType": "InheritanceSpecifier",
            "src": "917:17:17"
          }
        ],
        "contractDependencies": [
          2320,
          2327,
          2334,
          2341
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2363,
        "linearizedBaseContracts": [
          2363,
          2341,
          2334,
          2327,
          2320
        ],
        "name": "StorageMockChainChild",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 2347,
            "name": "child",
            "nodeType": "VariableDeclaration",
            "scope": 2363,
            "src": "939:22:17",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2346,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "939:7:17",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2361,
              "nodeType": "Block",
              "src": "1088:156:17",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "base_slot": {
                        "declaration": 2319,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1123:9:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "baseSlot": {
                        "declaration": 2350,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1111:8:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a3_slot": {
                        "declaration": 2331,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1173:7:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a3Slot": {
                        "declaration": 2354,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1163:6:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a1_slot": {
                        "declaration": 2324,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1149:7:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "a1Slot": {
                        "declaration": 2352,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1139:6:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "b1_slot": {
                        "declaration": 2338,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1197:7:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "b1Slot": {
                        "declaration": 2356,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1187:6:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "child_slot": {
                        "declaration": 2347,
                        "isOffset": false,
                        "isSlot": true,
                        "src": "1224:10:17",
                        "valueSize": 1
                      }
                    },
                    {
                      "childSlot": {
                        "declaration": 2358,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1211:9:17",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 2360,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    baseSlot := base_slot\n    a1Slot := a1_slot\n    a3Slot := a3_slot\n    b1Slot := b1_slot\n    childSlot := child_slot\n}",
                  "src": "1094:150:17"
                }
              ]
            },
            "documentation": null,
            "id": 2362,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "slots",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "980:2:17"
            },
            "payable": false,
            "returnParameters": {
              "id": 2359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2350,
                  "name": "baseSlot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1003:16:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2349,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2352,
                  "name": "a1Slot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1021:14:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2354,
                  "name": "a3Slot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1037:14:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2356,
                  "name": "b1Slot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1053:14:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2355,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2358,
                  "name": "childSlot",
                  "nodeType": "VariableDeclaration",
                  "scope": 2362,
                  "src": "1069:17:17",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2357,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1069:7:17",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1002:85:17"
            },
            "scope": 2363,
            "src": "966:278:17",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 2364,
        "src": "863:383:17"
      }
    ],
    "src": "0:1246:17"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-02-15T10:15:15.403Z"
}