{
  "contractName": "DummyImplementationV2",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "initializePayable",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "text",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initializeNonPayable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "reverts",
      "outputs": [],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "value",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "initializeNonPayable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "values",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "get",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "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": false,
      "inputs": [
        {
          "name": "newVal",
          "type": "uint256"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061076d806100206000396000f3fe6080604052600436106100c4576000357c01000000000000000000000000000000000000000000000000000000009004806354fd4d501161008157806354fd4d501461020e5780635ba8d2ad1461029e5780635e383d21146102d95780636d4ce63c146103285780639fba1f9a14610357578063d31f8b6b14610361576100c4565b806316eaa247146100c95780631f1bd692146100f7578063227367d5146101875780633bccbbc91461019e5780633fa4f245146101b5578063454b0608146101e0575b600080fd5b6100f5600480360360208110156100df57600080fd5b81019080803590602001909291905050506104c7565b005b34801561010357600080fd5b5061010c6104d1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014c578082015181840152602081019050610131565b50505050905090810190601f1680156101795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019357600080fd5b5061019c61056f565b005b3480156101aa57600080fd5b506101b3610579565b005b3480156101c157600080fd5b506101ca610588565b6040518082815260200191505060405180910390f35b61020c600480360360208110156101f657600080fd5b810190808035906020019092919050505061058e565b005b34801561021a57600080fd5b50610223610598565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610263578082015181840152602081019050610248565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102aa57600080fd5b506102d7600480360360208110156102c157600080fd5b81019080803590602001909291905050506105d5565b005b3480156102e557600080fd5b50610312600480360360208110156102fc57600080fd5b81019080803590602001909291905050506105df565b6040518082815260200191505060405180910390f35b34801561033457600080fd5b5061033d610602565b604051808215151515815260200191505060405180910390f35b61035f61060b565b005b34801561036d57600080fd5b506104c56004803603606081101561038457600080fd5b8101908080359060200190929190803590602001906401000000008111156103ab57600080fd5b8201836020820111156103bd57600080fd5b803590602001918460018302840111640100000000831117156103df57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561044257600080fd5b82018360208201111561045457600080fd5b8035906020019184602083028401116401000000008311171561047657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610615565b005b8060008190555050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105675780601f1061053c57610100808354040283529160200191610567565b820191906000526020600020905b81548152906001019060200180831161054a57829003601f168201915b505050505081565b600a600081905550565b6000151561058657600080fd5b565b60005481565b8060008190555050565b60606040805190810160405280600281526020017f5632000000000000000000000000000000000000000000000000000000000000815250905090565b8060008190555050565b6002818154811015156105ee57fe5b906000526020600020016000915090505481565b60006001905090565b6064600081905550565b82600081905550816001908051906020019061063292919061064f565b5080600290805190602001906106499291906106cf565b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061069057805160ff19168380011785556106be565b828001600101855582156106be579182015b828111156106bd5782518255916020019190600101906106a2565b5b5090506106cb919061071c565b5090565b82805482825590600052602060002090810192821561070b579160200282015b8281111561070a5782518255916020019190600101906106ef565b5b509050610718919061071c565b5090565b61073e91905b8082111561073a576000816000905550600101610722565b5090565b9056fea165627a7a7230582045e83ce34d082390042949162e66f2f0fe0322a4cc2c336f187aaaee5b4ca17c0029",
  "deployedBytecode": "0x6080604052600436106100c4576000357c01000000000000000000000000000000000000000000000000000000009004806354fd4d501161008157806354fd4d501461020e5780635ba8d2ad1461029e5780635e383d21146102d95780636d4ce63c146103285780639fba1f9a14610357578063d31f8b6b14610361576100c4565b806316eaa247146100c95780631f1bd692146100f7578063227367d5146101875780633bccbbc91461019e5780633fa4f245146101b5578063454b0608146101e0575b600080fd5b6100f5600480360360208110156100df57600080fd5b81019080803590602001909291905050506104c7565b005b34801561010357600080fd5b5061010c6104d1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561014c578082015181840152602081019050610131565b50505050905090810190601f1680156101795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019357600080fd5b5061019c61056f565b005b3480156101aa57600080fd5b506101b3610579565b005b3480156101c157600080fd5b506101ca610588565b6040518082815260200191505060405180910390f35b61020c600480360360208110156101f657600080fd5b810190808035906020019092919050505061058e565b005b34801561021a57600080fd5b50610223610598565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610263578082015181840152602081019050610248565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102aa57600080fd5b506102d7600480360360208110156102c157600080fd5b81019080803590602001909291905050506105d5565b005b3480156102e557600080fd5b50610312600480360360208110156102fc57600080fd5b81019080803590602001909291905050506105df565b6040518082815260200191505060405180910390f35b34801561033457600080fd5b5061033d610602565b604051808215151515815260200191505060405180910390f35b61035f61060b565b005b34801561036d57600080fd5b506104c56004803603606081101561038457600080fd5b8101908080359060200190929190803590602001906401000000008111156103ab57600080fd5b8201836020820111156103bd57600080fd5b803590602001918460018302840111640100000000831117156103df57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561044257600080fd5b82018360208201111561045457600080fd5b8035906020019184602083028401116401000000008311171561047657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610615565b005b8060008190555050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105675780601f1061053c57610100808354040283529160200191610567565b820191906000526020600020905b81548152906001019060200180831161054a57829003601f168201915b505050505081565b600a600081905550565b6000151561058657600080fd5b565b60005481565b8060008190555050565b60606040805190810160405280600281526020017f5632000000000000000000000000000000000000000000000000000000000000815250905090565b8060008190555050565b6002818154811015156105ee57fe5b906000526020600020016000915090505481565b60006001905090565b6064600081905550565b82600081905550816001908051906020019061063292919061064f565b5080600290805190602001906106499291906106cf565b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061069057805160ff19168380011785556106be565b828001600101855582156106be579182015b828111156106bd5782518255916020019190600101906106a2565b5b5090506106cb919061071c565b5090565b82805482825590600052602060002090810192821561070b579160200282015b8281111561070a5782518255916020019190600101906106ef565b5b509050610718919061071c565b5090565b61073e91905b8082111561073a576000816000905550600101610722565b5090565b9056fea165627a7a7230582045e83ce34d082390042949162e66f2f0fe0322a4cc2c336f187aaaee5b4ca17c0029",
  "sourceMap": "881:214:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:214:9;;;;;;;",
  "deployedSourceMap": "881:214:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;426:83;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;426:83:9;;;;;;;;;;;;;;;;;:::i;:::-;;160:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;160:18:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;160:18:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;210:60;;8:9:-1;5:2;;;30:1;27;20:12;5:2;210:60:9;;;:::i;:::-;;821:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;821:56:9;;;:::i;:::-;;136:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;136:20:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;939:73;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;939:73:9;;;;;;;;;;;;;;;;;:::i;:::-;;1016:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1016:77:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1016:77:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:78:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;344:78:9;;;;;;;;;;;;;;;;;:::i;:::-;;182:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;182:23:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;182:23:9;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;672:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;672:64:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;274:66;;;:::i;:::-;;513:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:155:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;513:155:9;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;513:155:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;513:155:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;513:155:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;513:155:9;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;513:155:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;513:155:9;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;513:155:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;513:155:9;;;;;;;;;;;;;;;:::i;:::-;;426:83;498:6;490:5;:14;;;;426:83;:::o;160:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;210:60::-;263:2;255:5;:10;;;;210:60::o;821:56::-;866:5;858:14;;;;;;;;821:56::o;136:20::-;;;;:::o;939:73::-;1001:6;993:5;:14;;;;939:73;:::o;1016:77::-;1056:13;1077:11;;;;;;;;;;;;;;;;;;;;1016:77;:::o;344:78::-;411:6;403:5;:14;;;;344:78;:::o;182:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;672:64::-;708:4;727;720:11;;672:64;:::o;274:66::-;332:3;324:5;:11;;;;274:66::o;513:155::-;617:6;609:5;:14;;;;636:5;629:4;:12;;;;;;;;;;;;:::i;:::-;;656:7;647:6;:16;;;;;;;;;;;;:::i;:::-;;513:155;;;:::o;881:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\ncontract Impl {\n  function version() public pure returns (string memory); \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 memory _text, uint256[] memory _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 memory) {\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 memory) {\n    return \"V2\";\n  }\n}\n",
  "sourcePath": "/Users/ryan/Projects/alice-finance/openzeppelin-sdk/packages/lib/contracts/mocks/DummyImplementation.sol",
  "ast": {
    "absolutePath": "/Users/ryan/Projects/alice-finance/openzeppelin-sdk/packages/lib/contracts/mocks/DummyImplementation.sol",
    "exportedSymbols": {
      "DummyImplementation": [
        1518
      ],
      "DummyImplementationV2": [
        1539
      ],
      "Impl": [
        1427
      ]
    },
    "id": 1540,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1421,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1427,
        "linearizedBaseContracts": [
          1427
        ],
        "name": "Impl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 1426,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59:2:9"
            },
            "returnParameters": {
              "id": 1425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1424,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1426,
                  "src": "83:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1423,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "83:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "82:15:9"
            },
            "scope": 1427,
            "src": "43:55:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1540,
        "src": "25:76:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1518,
        "linearizedBaseContracts": [
          1518
        ],
        "name": "DummyImplementation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1429,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 1518,
            "src": "136:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1428,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "136:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1431,
            "name": "text",
            "nodeType": "VariableDeclaration",
            "scope": 1518,
            "src": "160:18:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1430,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "160:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1434,
            "name": "values",
            "nodeType": "VariableDeclaration",
            "scope": 1518,
            "src": "182:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 1432,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "182:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 1433,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "182:9:9",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1441,
              "nodeType": "Block",
              "src": "249:21:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1437,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "255:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 1438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "263:2:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "255:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1440,
                  "nodeType": "ExpressionStatement",
                  "src": "255:10:9"
                }
              ]
            },
            "documentation": null,
            "id": 1442,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "239:2:9"
            },
            "returnParameters": {
              "id": 1436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "249:0:9"
            },
            "scope": 1518,
            "src": "210:60:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1449,
              "nodeType": "Block",
              "src": "318:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1445,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "324:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 1446,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "332:3:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "324:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1448,
                  "nodeType": "ExpressionStatement",
                  "src": "324:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1450,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "300:2:9"
            },
            "returnParameters": {
              "id": 1444,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "318:0:9"
            },
            "scope": 1518,
            "src": "274:66:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1459,
              "nodeType": "Block",
              "src": "397:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1455,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "403:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1456,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1452,
                      "src": "411:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "403:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1458,
                  "nodeType": "ExpressionStatement",
                  "src": "403:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1452,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1460,
                  "src": "374:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1451,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "374:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "373:16:9"
            },
            "returnParameters": {
              "id": 1454,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "397:0:9"
            },
            "scope": 1518,
            "src": "344:78:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1469,
              "nodeType": "Block",
              "src": "484:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1465,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "490:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1466,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1462,
                      "src": "498:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "490:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1468,
                  "nodeType": "ExpressionStatement",
                  "src": "490:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1470,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1462,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1470,
                  "src": "453:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1461,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "453:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "452:16:9"
            },
            "returnParameters": {
              "id": 1464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "484:0:9"
            },
            "scope": 1518,
            "src": "426:83:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1492,
              "nodeType": "Block",
              "src": "603:65:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1480,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "609:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1481,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1472,
                      "src": "617:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "609:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1483,
                  "nodeType": "ExpressionStatement",
                  "src": "609:14:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1484,
                      "name": "text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1431,
                      "src": "629:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1485,
                      "name": "_text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1474,
                      "src": "636:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "629:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1487,
                  "nodeType": "ExpressionStatement",
                  "src": "629:12:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1488,
                      "name": "values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1434,
                      "src": "647:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1489,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1477,
                      "src": "656:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "647:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1491,
                  "nodeType": "ExpressionStatement",
                  "src": "647:16:9"
                }
              ]
            },
            "documentation": null,
            "id": 1493,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1472,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "533:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1471,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "533:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1474,
                  "name": "_text",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "549:19:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1473,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "549:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1477,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "570:24:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1475,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "570:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1476,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "570:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "532:63:9"
            },
            "returnParameters": {
              "id": 1479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "603:0:9"
            },
            "scope": 1518,
            "src": "513:155:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1500,
              "nodeType": "Block",
              "src": "714:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "727:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1497,
                  "id": 1499,
                  "nodeType": "Return",
                  "src": "720:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1501,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1494,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "684:2:9"
            },
            "returnParameters": {
              "id": 1497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1496,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "708:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1495,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "708:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "707:6:9"
            },
            "scope": 1518,
            "src": "672:64:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1508,
              "nodeType": "Block",
              "src": "795:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5631",
                    "id": 1506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "808:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4c23426613a5dc69e08fbd2787e6210aa679d4522e95a89d4dd88c4fd13a2283",
                      "typeString": "literal_string \"V1\""
                    },
                    "value": "V1"
                  },
                  "functionReturnParameters": 1505,
                  "id": 1507,
                  "nodeType": "Return",
                  "src": "801:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1509,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "756:2:9"
            },
            "returnParameters": {
              "id": 1505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1504,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1509,
                  "src": "780:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1503,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "779:15:9"
            },
            "scope": 1518,
            "src": "740:77:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1516,
              "nodeType": "Block",
              "src": "852:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "866:5:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1512,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6404,
                        6405
                      ],
                      "referencedDeclaration": 6404,
                      "src": "858:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "858:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1515,
                  "nodeType": "ExpressionStatement",
                  "src": "858:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1517,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "reverts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1510,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:2:9"
            },
            "returnParameters": {
              "id": 1511,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "852:0:9"
            },
            "scope": 1518,
            "src": "821:56:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1540,
        "src": "103:776:9"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1519,
              "name": "DummyImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1518,
              "src": "915:19:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DummyImplementation_$1518",
                "typeString": "contract DummyImplementation"
              }
            },
            "id": 1520,
            "nodeType": "InheritanceSpecifier",
            "src": "915:19:9"
          }
        ],
        "contractDependencies": [
          1518
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1539,
        "linearizedBaseContracts": [
          1539,
          1518
        ],
        "name": "DummyImplementationV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1529,
              "nodeType": "Block",
              "src": "987:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1525,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "993:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1526,
                      "name": "newVal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1522,
                      "src": "1001:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "993:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1528,
                  "nodeType": "ExpressionStatement",
                  "src": "993:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1522,
                  "name": "newVal",
                  "nodeType": "VariableDeclaration",
                  "scope": 1530,
                  "src": "956:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "956:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "955:16:9"
            },
            "returnParameters": {
              "id": 1524,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "987:0:9"
            },
            "scope": 1539,
            "src": "939:73:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1537,
              "nodeType": "Block",
              "src": "1071:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5632",
                    "id": 1535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1084:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_23d235efaf569b2b407d10f447247743508d1762a8e3a3aed85ccc0570dde35f",
                      "typeString": "literal_string \"V2\""
                    },
                    "value": "V2"
                  },
                  "functionReturnParameters": 1534,
                  "id": 1536,
                  "nodeType": "Return",
                  "src": "1077:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1538,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1032:2:9"
            },
            "returnParameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1538,
                  "src": "1056:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1532,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1055:15:9"
            },
            "scope": 1539,
            "src": "1016:77:9",
            "stateMutability": "pure",
            "superFunction": 1509,
            "visibility": "public"
          }
        ],
        "scope": 1540,
        "src": "881:214:9"
      }
    ],
    "src": "0:1096:9"
  },
  "legacyAST": {
    "absolutePath": "/Users/ryan/Projects/alice-finance/openzeppelin-sdk/packages/lib/contracts/mocks/DummyImplementation.sol",
    "exportedSymbols": {
      "DummyImplementation": [
        1518
      ],
      "DummyImplementationV2": [
        1539
      ],
      "Impl": [
        1427
      ]
    },
    "id": 1540,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1421,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 1427,
        "linearizedBaseContracts": [
          1427
        ],
        "name": "Impl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 1426,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59:2:9"
            },
            "returnParameters": {
              "id": 1425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1424,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1426,
                  "src": "83:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1423,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "83:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "82:15:9"
            },
            "scope": 1427,
            "src": "43:55:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1540,
        "src": "25:76:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1518,
        "linearizedBaseContracts": [
          1518
        ],
        "name": "DummyImplementation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1429,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 1518,
            "src": "136:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 1428,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "136:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1431,
            "name": "text",
            "nodeType": "VariableDeclaration",
            "scope": 1518,
            "src": "160:18:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 1430,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "160:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1434,
            "name": "values",
            "nodeType": "VariableDeclaration",
            "scope": 1518,
            "src": "182:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 1432,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "182:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 1433,
              "length": null,
              "nodeType": "ArrayTypeName",
              "src": "182:9:9",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1441,
              "nodeType": "Block",
              "src": "249:21:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1437,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "255:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 1438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "263:2:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "255:10:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1440,
                  "nodeType": "ExpressionStatement",
                  "src": "255:10:9"
                }
              ]
            },
            "documentation": null,
            "id": 1442,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "239:2:9"
            },
            "returnParameters": {
              "id": 1436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "249:0:9"
            },
            "scope": 1518,
            "src": "210:60:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1449,
              "nodeType": "Block",
              "src": "318:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1445,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "324:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 1446,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "332:3:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "324:11:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1448,
                  "nodeType": "ExpressionStatement",
                  "src": "324:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1450,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "300:2:9"
            },
            "returnParameters": {
              "id": 1444,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "318:0:9"
            },
            "scope": 1518,
            "src": "274:66:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1459,
              "nodeType": "Block",
              "src": "397:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1455,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "403:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1456,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1452,
                      "src": "411:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "403:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1458,
                  "nodeType": "ExpressionStatement",
                  "src": "403:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializeNonPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1452,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1460,
                  "src": "374:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1451,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "374:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "373:16:9"
            },
            "returnParameters": {
              "id": 1454,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "397:0:9"
            },
            "scope": 1518,
            "src": "344:78:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1469,
              "nodeType": "Block",
              "src": "484:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1465,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "490:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1466,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1462,
                      "src": "498:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "490:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1468,
                  "nodeType": "ExpressionStatement",
                  "src": "490:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1470,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1462,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1470,
                  "src": "453:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1461,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "453:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "452:16:9"
            },
            "returnParameters": {
              "id": 1464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "484:0:9"
            },
            "scope": 1518,
            "src": "426:83:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1492,
              "nodeType": "Block",
              "src": "603:65:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1480,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "609:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1481,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1472,
                      "src": "617:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "609:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1483,
                  "nodeType": "ExpressionStatement",
                  "src": "609:14:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1484,
                      "name": "text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1431,
                      "src": "629:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1485,
                      "name": "_text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1474,
                      "src": "636:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "629:12:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 1487,
                  "nodeType": "ExpressionStatement",
                  "src": "629:12:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1488,
                      "name": "values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1434,
                      "src": "647:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1489,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1477,
                      "src": "656:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "647:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1491,
                  "nodeType": "ExpressionStatement",
                  "src": "647:16:9"
                }
              ]
            },
            "documentation": null,
            "id": 1493,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1472,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "533:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1471,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "533:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1474,
                  "name": "_text",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "549:19:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1473,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "549:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1477,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "570:24:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1475,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "570:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1476,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "570:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "532:63:9"
            },
            "returnParameters": {
              "id": 1479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "603:0:9"
            },
            "scope": 1518,
            "src": "513:155:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1500,
              "nodeType": "Block",
              "src": "714:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "727:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1497,
                  "id": 1499,
                  "nodeType": "Return",
                  "src": "720:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1501,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1494,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "684:2:9"
            },
            "returnParameters": {
              "id": 1497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1496,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1501,
                  "src": "708:4:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1495,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "708:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "707:6:9"
            },
            "scope": 1518,
            "src": "672:64:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1508,
              "nodeType": "Block",
              "src": "795:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5631",
                    "id": 1506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "808:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4c23426613a5dc69e08fbd2787e6210aa679d4522e95a89d4dd88c4fd13a2283",
                      "typeString": "literal_string \"V1\""
                    },
                    "value": "V1"
                  },
                  "functionReturnParameters": 1505,
                  "id": 1507,
                  "nodeType": "Return",
                  "src": "801:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1509,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "756:2:9"
            },
            "returnParameters": {
              "id": 1505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1504,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1509,
                  "src": "780:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1503,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "779:15:9"
            },
            "scope": 1518,
            "src": "740:77:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1516,
              "nodeType": "Block",
              "src": "852:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "866:5:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1512,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6404,
                        6405
                      ],
                      "referencedDeclaration": 6404,
                      "src": "858:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "858:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1515,
                  "nodeType": "ExpressionStatement",
                  "src": "858:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1517,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "reverts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1510,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "837:2:9"
            },
            "returnParameters": {
              "id": 1511,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "852:0:9"
            },
            "scope": 1518,
            "src": "821:56:9",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1540,
        "src": "103:776:9"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1519,
              "name": "DummyImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1518,
              "src": "915:19:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DummyImplementation_$1518",
                "typeString": "contract DummyImplementation"
              }
            },
            "id": 1520,
            "nodeType": "InheritanceSpecifier",
            "src": "915:19:9"
          }
        ],
        "contractDependencies": [
          1518
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1539,
        "linearizedBaseContracts": [
          1539,
          1518
        ],
        "name": "DummyImplementationV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1529,
              "nodeType": "Block",
              "src": "987:25:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1525,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1429,
                      "src": "993:5:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1526,
                      "name": "newVal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1522,
                      "src": "1001:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "993:14:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1528,
                  "nodeType": "ExpressionStatement",
                  "src": "993:14:9"
                }
              ]
            },
            "documentation": null,
            "id": 1530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1522,
                  "name": "newVal",
                  "nodeType": "VariableDeclaration",
                  "scope": 1530,
                  "src": "956:14:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1521,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "956:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "955:16:9"
            },
            "returnParameters": {
              "id": 1524,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "987:0:9"
            },
            "scope": 1539,
            "src": "939:73:9",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1537,
              "nodeType": "Block",
              "src": "1071:22:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "5632",
                    "id": 1535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1084:4:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_23d235efaf569b2b407d10f447247743508d1762a8e3a3aed85ccc0570dde35f",
                      "typeString": "literal_string \"V2\""
                    },
                    "value": "V2"
                  },
                  "functionReturnParameters": 1534,
                  "id": 1536,
                  "nodeType": "Return",
                  "src": "1077:11:9"
                }
              ]
            },
            "documentation": null,
            "id": 1538,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1032:2:9"
            },
            "returnParameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1538,
                  "src": "1056:13:9",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1532,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1055:15:9"
            },
            "scope": 1539,
            "src": "1016:77:9",
            "stateMutability": "pure",
            "superFunction": 1509,
            "visibility": "public"
          }
        ],
        "scope": 1540,
        "src": "881:214:9"
      }
    ],
    "src": "0:1096:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.3+commit.10d17f24.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.2",
  "updatedAt": "2019-10-02T02:54:36.363Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}