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