{
  "contractName": "DummyImplementation",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "text",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "value",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "values",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initializeNonPayable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "initializeNonPayable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "initializePayable",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initializePayable",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_text",
          "type": "string"
        },
        {
          "name": "_values",
          "type": "uint256[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "get",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "reverts",
      "outputs": [],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610646806100206000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806316eaa247146100b45780631f1bd692146100d4578063227367d5146101645780633bccbbc91461017b5780633fa4f2451461019257806354fd4d50146101bd5780635ba8d2ad1461024d5780635e383d211461027a5780636d4ce63c146102bb5780639fba1f9a146102ea578063d31f8b6b146102f4575b600080fd5b6100d2600480360381019080803590602001909291905050506103aa565b005b3480156100e057600080fd5b506100e96103b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012957808201518184015260208101905061010e565b50505050905090810190601f1680156101565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017057600080fd5b50610179610452565b005b34801561018757600080fd5b5061019061045c565b005b34801561019e57600080fd5b506101a761046b565b6040518082815260200191505060405180910390f35b3480156101c957600080fd5b506101d2610471565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102125780820151818401526020810190506101f7565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b50610278600480360381019080803590602001909291905050506104ae565b005b34801561028657600080fd5b506102a5600480360381019080803590602001909291905050506104b8565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102d06104db565b604051808215151515815260200191505060405180910390f35b6102f26104e4565b005b34801561030057600080fd5b506103a860048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104ee565b005b8060008190555050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b505050505081565b600a600081905550565b6000151561046957600080fd5b565b60005481565b60606040805190810160405280600281526020017f5631000000000000000000000000000000000000000000000000000000000000815250905090565b8060008190555050565b6002818154811015156104c757fe5b906000526020600020016000915090505481565b60006001905090565b6064600081905550565b82600081905550816001908051906020019061050b929190610528565b5080600290805190602001906105229291906105a8565b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061056957805160ff1916838001178555610597565b82800160010185558215610597579182015b8281111561059657825182559160200191906001019061057b565b5b5090506105a491906105f5565b5090565b8280548282559060005260206000209081019282156105e4579160200282015b828111156105e35782518255916020019190600101906105c8565b5b5090506105f191906105f5565b5090565b61061791905b808211156106135760008160009055506001016105fb565b5090565b905600a165627a7a7230582002d2465cbec0ec10bce5f57200686b940aa48920a2a2eb0b388aee024da335910029",
  "deployedBytecode": "0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806316eaa247146100b45780631f1bd692146100d4578063227367d5146101645780633bccbbc91461017b5780633fa4f2451461019257806354fd4d50146101bd5780635ba8d2ad1461024d5780635e383d211461027a5780636d4ce63c146102bb5780639fba1f9a146102ea578063d31f8b6b146102f4575b600080fd5b6100d2600480360381019080803590602001909291905050506103aa565b005b3480156100e057600080fd5b506100e96103b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561012957808201518184015260208101905061010e565b50505050905090810190601f1680156101565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017057600080fd5b50610179610452565b005b34801561018757600080fd5b5061019061045c565b005b34801561019e57600080fd5b506101a761046b565b6040518082815260200191505060405180910390f35b3480156101c957600080fd5b506101d2610471565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102125780820151818401526020810190506101f7565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b50610278600480360381019080803590602001909291905050506104ae565b005b34801561028657600080fd5b506102a5600480360381019080803590602001909291905050506104b8565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102d06104db565b604051808215151515815260200191505060405180910390f35b6102f26104e4565b005b34801561030057600080fd5b506103a860048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104ee565b005b8060008190555050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b505050505081565b600a600081905550565b6000151561046957600080fd5b565b60005481565b60606040805190810160405280600281526020017f5631000000000000000000000000000000000000000000000000000000000000815250905090565b8060008190555050565b6002818154811015156104c757fe5b906000526020600020016000915090505481565b60006001905090565b6064600081905550565b82600081905550816001908051906020019061050b929190610528565b5080600290805190602001906105229291906105a8565b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061056957805160ff1916838001178555610597565b82800160010185558215610597579182015b8281111561059657825182559160200191906001019061057b565b5b5090506105a491906105f5565b5090565b8280548282559060005260206000209081019282156105e4579160200282015b828111156105e35782518255916020019190600101906105c8565b5b5090506105f191906105f5565b5090565b61061791905b808211156106135760008160009055506001016105fb565b5090565b905600a165627a7a7230582002d2465cbec0ec10bce5f57200686b940aa48920a2a2eb0b388aee024da335910029",
  "sourceMap": "97:755:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;97:755:8;;;;;;;",
  "deployedSourceMap": "97:755:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:83;;;;;;;;;;;;;;;;;;;;;;;;;;154:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;154:18:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;154:18:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;204:60;;8:9:-1;5:2;;;30:1;27;20:12;5:2;204:60:8;;;;;;794:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;794:56:8;;;;;;130:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;130:20:8;;;;;;;;;;;;;;;;;;;;;;;720:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;720:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;338:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;338:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;176:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;176:23:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;652:64:8;;;;;;;;;;;;;;;;;;;;;;;;;;;268:66;;;;;;507:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;507:141:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:83;492:6;484:5;:14;;;;420:83;:::o;154:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;204:60::-;257:2;249:5;:10;;;;204:60::o;794:56::-;839:5;831:14;;;;;;;;794:56::o;130:20::-;;;;:::o;720:70::-;760:6;774:11;;;;;;;;;;;;;;;;;;;;720:70;:::o;338:78::-;405:6;397:5;:14;;;;338:78;:::o;176:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;652:64::-;688:4;707;700:11;;652:64;:::o;268:66::-;326:3;318:5;:11;;;;268:66::o;507:141::-;597:6;589:5;:14;;;;616:5;609:4;:12;;;;;;;;;;;;:::i;:::-;;636:7;627:6;:16;;;;;;;;;;;;:::i;:::-;;507:141;;;:::o;97:755::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\ncontract Impl {\n  function version() public pure returns (string); \n}\n\ncontract DummyImplementation {\n  uint256 public value;\n  string public text;\n  uint256[] public values;\n\n  function initializeNonPayable() public {\n    value = 10;\n  }\n\n  function initializePayable() payable public {\n    value = 100;\n  }\n\n  function initializeNonPayable(uint256 _value) public {\n    value = _value;\n  }\n\n  function initializePayable(uint256 _value) payable public {\n    value = _value;\n  }\n\n  function initialize(uint256 _value, string _text, uint256[] _values) public {\n    value = _value;\n    text = _text;\n    values = _values;\n  }\n\n  function get() public pure returns (bool) {\n    return true;\n  }\n\n  function version() public pure returns (string) {\n    return \"V1\";\n  }\n\n  function reverts() public pure {\n    require(false);\n  }\n}\n\ncontract DummyImplementationV2 is DummyImplementation {\n  function migrate(uint256 newVal) payable public {\n    value = newVal;\n  }\n\n  function version() public pure returns (string) {\n    return \"V2\";\n  }\n}\n",
  "sourcePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/DummyImplementation.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/DummyImplementation.sol",
    "exportedSymbols": {
      "DummyImplementation": [
        1418
      ],
      "DummyImplementationV2": [
        1439
      ],
      "Impl": [
        1327
      ]
    },
    "id": 1440,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1321,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1327,
        "linearizedBaseContracts": [
          1327
        ],
        "name": "Impl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 1326,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1324,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1326,
                  "src": "84:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1323,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "84:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "83:8:8"
            },
            "scope": 1327,
            "src": "44:48:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1440,
        "src": "26:69:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1418,
        "linearizedBaseContracts": [
          1418
        ],
        "name": "DummyImplementation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1329,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 1418,
            "src": "130:20:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1328,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "130:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1331,
            "name": "text",
            "nodeType": "VariableDeclaration",
            "scope": 1418,
            "src": "154:18:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1330,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "154:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1334,
            "name": "values",
            "nodeType": "VariableDeclaration",
            "scope": 1418,
            "src": "176:23:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 1332,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "176:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 1333,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "176:9:8",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1341,
              "nodeType": "Block",
              "src": "243:21:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1337,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "249:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 1338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "257:2:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "249:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1340,
                  "nodeType": "ExpressionStatement",
                  "src": "249:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 1342,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "233:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1336,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "243:0:8"
            },
            "scope": 1418,
            "src": "204:60:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "312:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1345,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "318:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 1346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "326:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "318:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1348,
                  "nodeType": "ExpressionStatement",
                  "src": "318:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1350,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "294:2:8"
            },
            "payable": true,
            "returnParameters": {
              "id": 1344,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "312:0:8"
            },
            "scope": 1418,
            "src": "268:66:8",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1359,
              "nodeType": "Block",
              "src": "391:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1355,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "397:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1356,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1352,
                      "src": "405:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "397:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1358,
                  "nodeType": "ExpressionStatement",
                  "src": "397:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1360,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1352,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "368:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "368:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "367:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "391:0:8"
            },
            "scope": 1418,
            "src": "338:78:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1369,
              "nodeType": "Block",
              "src": "478:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1365,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "484:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1366,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1362,
                      "src": "492:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "484:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1368,
                  "nodeType": "ExpressionStatement",
                  "src": "484:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1370,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1362,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1370,
                  "src": "447:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "446:16:8"
            },
            "payable": true,
            "returnParameters": {
              "id": 1364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "478:0:8"
            },
            "scope": 1418,
            "src": "420:83:8",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1392,
              "nodeType": "Block",
              "src": "583:65:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1380,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "589:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1381,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1372,
                      "src": "597:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "589:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1383,
                  "nodeType": "ExpressionStatement",
                  "src": "589:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1384,
                      "name": "text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1331,
                      "src": "609:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1385,
                      "name": "_text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1374,
                      "src": "616:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "609:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1387,
                  "nodeType": "ExpressionStatement",
                  "src": "609:12:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1388,
                      "name": "values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1334,
                      "src": "627:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1389,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1377,
                      "src": "636:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "627:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1391,
                  "nodeType": "ExpressionStatement",
                  "src": "627:16:8"
                }
              ]
            },
            "documentation": null,
            "id": 1393,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1372,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1393,
                  "src": "527:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1371,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "527:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1374,
                  "name": "_text",
                  "nodeType": "VariableDeclaration",
                  "scope": 1393,
                  "src": "543:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1373,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "543:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1377,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 1393,
                  "src": "557:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1375,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "557:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1376,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "557:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:49:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1379,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "583:0:8"
            },
            "scope": 1418,
            "src": "507:141:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1400,
              "nodeType": "Block",
              "src": "694:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "707:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1397,
                  "id": 1399,
                  "nodeType": "Return",
                  "src": "700:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1401,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1394,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "664:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1396,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1401,
                  "src": "688:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1395,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "688:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "687:6:8"
            },
            "scope": 1418,
            "src": "652:64:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1408,
              "nodeType": "Block",
              "src": "768:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5631",
                    "id": 1406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "781:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4c23426613a5dc69e08fbd2787e6210aa679d4522e95a89d4dd88c4fd13a2283",
                      "typeString": "literal_string \"V1\""
                    },
                    "value": "V1"
                  },
                  "functionReturnParameters": 1405,
                  "id": 1407,
                  "nodeType": "Return",
                  "src": "774:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1409,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1402,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "736:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1404,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1409,
                  "src": "760:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1403,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "760:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "759:8:8"
            },
            "scope": 1418,
            "src": "720:70:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1416,
              "nodeType": "Block",
              "src": "825:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "839:5:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1412,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3160,
                        3161
                      ],
                      "referencedDeclaration": 3160,
                      "src": "831:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "831:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1415,
                  "nodeType": "ExpressionStatement",
                  "src": "831:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1417,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "reverts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1410,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "810:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1411,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:8"
            },
            "scope": 1418,
            "src": "794:56:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1440,
        "src": "97:755:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1419,
              "name": "DummyImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1418,
              "src": "888:19:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DummyImplementation_$1418",
                "typeString": "contract DummyImplementation"
              }
            },
            "id": 1420,
            "nodeType": "InheritanceSpecifier",
            "src": "888:19:8"
          }
        ],
        "contractDependencies": [
          1418
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1439,
        "linearizedBaseContracts": [
          1439,
          1418
        ],
        "name": "DummyImplementationV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1429,
              "nodeType": "Block",
              "src": "960:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1425,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "966:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1426,
                      "name": "newVal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1422,
                      "src": "974:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "966:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1428,
                  "nodeType": "ExpressionStatement",
                  "src": "966:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1430,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1422,
                  "name": "newVal",
                  "nodeType": "VariableDeclaration",
                  "scope": 1430,
                  "src": "929:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1421,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "929:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "928:16:8"
            },
            "payable": true,
            "returnParameters": {
              "id": 1424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "960:0:8"
            },
            "scope": 1439,
            "src": "912:73:8",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1437,
              "nodeType": "Block",
              "src": "1037:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5632",
                    "id": 1435,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1050:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_23d235efaf569b2b407d10f447247743508d1762a8e3a3aed85ccc0570dde35f",
                      "typeString": "literal_string \"V2\""
                    },
                    "value": "V2"
                  },
                  "functionReturnParameters": 1434,
                  "id": 1436,
                  "nodeType": "Return",
                  "src": "1043:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1438,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1431,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1005:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1433,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1438,
                  "src": "1029:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1432,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1029:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1028:8:8"
            },
            "scope": 1439,
            "src": "989:70:8",
            "stateMutability": "pure",
            "superFunction": 1409,
            "visibility": "public"
          }
        ],
        "scope": 1440,
        "src": "854:207:8"
      }
    ],
    "src": "0:1062:8"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/WebstormProjects/zos/packages/lib/contracts/mocks/DummyImplementation.sol",
    "exportedSymbols": {
      "DummyImplementation": [
        1418
      ],
      "DummyImplementationV2": [
        1439
      ],
      "Impl": [
        1327
      ]
    },
    "id": 1440,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1321,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1327,
        "linearizedBaseContracts": [
          1327
        ],
        "name": "Impl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 1326,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1324,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1326,
                  "src": "84:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1323,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "84:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "83:8:8"
            },
            "scope": 1327,
            "src": "44:48:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1440,
        "src": "26:69:8"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1418,
        "linearizedBaseContracts": [
          1418
        ],
        "name": "DummyImplementation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1329,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 1418,
            "src": "130:20:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1328,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "130:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1331,
            "name": "text",
            "nodeType": "VariableDeclaration",
            "scope": 1418,
            "src": "154:18:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1330,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "154:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1334,
            "name": "values",
            "nodeType": "VariableDeclaration",
            "scope": 1418,
            "src": "176:23:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 1332,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "176:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 1333,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "176:9:8",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1341,
              "nodeType": "Block",
              "src": "243:21:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1337,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "249:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 1338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "257:2:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "249:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1340,
                  "nodeType": "ExpressionStatement",
                  "src": "249:10:8"
                }
              ]
            },
            "documentation": null,
            "id": 1342,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "233:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1336,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "243:0:8"
            },
            "scope": 1418,
            "src": "204:60:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "312:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1345,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "318:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 1346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "326:3:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "318:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1348,
                  "nodeType": "ExpressionStatement",
                  "src": "318:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1350,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "294:2:8"
            },
            "payable": true,
            "returnParameters": {
              "id": 1344,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "312:0:8"
            },
            "scope": 1418,
            "src": "268:66:8",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1359,
              "nodeType": "Block",
              "src": "391:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1355,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "397:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1356,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1352,
                      "src": "405:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "397:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1358,
                  "nodeType": "ExpressionStatement",
                  "src": "397:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1360,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1352,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "368:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1351,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "368:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "367:16:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "391:0:8"
            },
            "scope": 1418,
            "src": "338:78:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1369,
              "nodeType": "Block",
              "src": "478:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1365,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "484:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1366,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1362,
                      "src": "492:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "484:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1368,
                  "nodeType": "ExpressionStatement",
                  "src": "484:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1370,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1362,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1370,
                  "src": "447:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "446:16:8"
            },
            "payable": true,
            "returnParameters": {
              "id": 1364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "478:0:8"
            },
            "scope": 1418,
            "src": "420:83:8",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1392,
              "nodeType": "Block",
              "src": "583:65:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1380,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "589:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1381,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1372,
                      "src": "597:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "589:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1383,
                  "nodeType": "ExpressionStatement",
                  "src": "589:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1384,
                      "name": "text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1331,
                      "src": "609:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1385,
                      "name": "_text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1374,
                      "src": "616:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "609:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1387,
                  "nodeType": "ExpressionStatement",
                  "src": "609:12:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1388,
                      "name": "values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1334,
                      "src": "627:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1389,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1377,
                      "src": "636:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "627:16:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1391,
                  "nodeType": "ExpressionStatement",
                  "src": "627:16:8"
                }
              ]
            },
            "documentation": null,
            "id": 1393,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1372,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1393,
                  "src": "527:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1371,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "527:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1374,
                  "name": "_text",
                  "nodeType": "VariableDeclaration",
                  "scope": 1393,
                  "src": "543:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1373,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "543:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1377,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 1393,
                  "src": "557:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1375,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "557:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1376,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "557:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "526:49:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1379,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "583:0:8"
            },
            "scope": 1418,
            "src": "507:141:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1400,
              "nodeType": "Block",
              "src": "694:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "707:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1397,
                  "id": 1399,
                  "nodeType": "Return",
                  "src": "700:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1401,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1394,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "664:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1396,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1401,
                  "src": "688:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1395,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "688:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "687:6:8"
            },
            "scope": 1418,
            "src": "652:64:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1408,
              "nodeType": "Block",
              "src": "768:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5631",
                    "id": 1406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "781:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4c23426613a5dc69e08fbd2787e6210aa679d4522e95a89d4dd88c4fd13a2283",
                      "typeString": "literal_string \"V1\""
                    },
                    "value": "V1"
                  },
                  "functionReturnParameters": 1405,
                  "id": 1407,
                  "nodeType": "Return",
                  "src": "774:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1409,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1402,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "736:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1404,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1409,
                  "src": "760:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1403,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "760:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "759:8:8"
            },
            "scope": 1418,
            "src": "720:70:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1416,
              "nodeType": "Block",
              "src": "825:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "839:5:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1412,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3160,
                        3161
                      ],
                      "referencedDeclaration": 3160,
                      "src": "831:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "831:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1415,
                  "nodeType": "ExpressionStatement",
                  "src": "831:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1417,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "reverts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1410,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "810:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1411,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:8"
            },
            "scope": 1418,
            "src": "794:56:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1440,
        "src": "97:755:8"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1419,
              "name": "DummyImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1418,
              "src": "888:19:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DummyImplementation_$1418",
                "typeString": "contract DummyImplementation"
              }
            },
            "id": 1420,
            "nodeType": "InheritanceSpecifier",
            "src": "888:19:8"
          }
        ],
        "contractDependencies": [
          1418
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1439,
        "linearizedBaseContracts": [
          1439,
          1418
        ],
        "name": "DummyImplementationV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1429,
              "nodeType": "Block",
              "src": "960:25:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1425,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1329,
                      "src": "966:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1426,
                      "name": "newVal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1422,
                      "src": "974:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "966:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1428,
                  "nodeType": "ExpressionStatement",
                  "src": "966:14:8"
                }
              ]
            },
            "documentation": null,
            "id": 1430,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1422,
                  "name": "newVal",
                  "nodeType": "VariableDeclaration",
                  "scope": 1430,
                  "src": "929:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1421,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "929:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "928:16:8"
            },
            "payable": true,
            "returnParameters": {
              "id": 1424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "960:0:8"
            },
            "scope": 1439,
            "src": "912:73:8",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1437,
              "nodeType": "Block",
              "src": "1037:22:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5632",
                    "id": 1435,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1050:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_23d235efaf569b2b407d10f447247743508d1762a8e3a3aed85ccc0570dde35f",
                      "typeString": "literal_string \"V2\""
                    },
                    "value": "V2"
                  },
                  "functionReturnParameters": 1434,
                  "id": 1436,
                  "nodeType": "Return",
                  "src": "1043:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 1438,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1431,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1005:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1433,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1438,
                  "src": "1029:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1432,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1029:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1028:8:8"
            },
            "scope": 1439,
            "src": "989:70:8",
            "stateMutability": "pure",
            "superFunction": 1409,
            "visibility": "public"
          }
        ],
        "scope": 1440,
        "src": "854:207:8"
      }
    ],
    "src": "0:1062:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-02-15T10:15:15.363Z"
}