{
  "fileName": "RegressionImplementation.sol",
  "contractName": "Implementation1",
  "source": "pragma solidity ^0.5.0;\n\nimport \"../Initializable.sol\";\n\ncontract Implementation1 is Initializable {\n  uint value;\n\n  function initialize() initializer public {\n  }\n\n  function setValue(uint _number) public {\n    value = _number;\n  }\n}\n\ncontract Implementation2 is Initializable {\n  uint value;\n\n  function initialize() initializer public {\n  }\n\n  function setValue(uint _number) public {\n    value = _number;\n  }\n\n  function getValue() public view returns (uint) {\n    return value;\n  }\n}\n\ncontract Implementation3 is Initializable {\n  uint value;\n\n  function initialize() initializer public {\n  }\n\n  function setValue(uint _number) public {\n    value = _number;\n  }\n\n  function getValue(uint _number) public view returns (uint) {\n    return value + _number;\n  }\n}\n\ncontract Implementation4 is Initializable {\n  uint value;\n\n  function initialize() initializer public {\n  }\n\n  function setValue(uint _number) public {\n    value = _number;\n  }\n\n  function getValue() public view returns (uint) {\n    return value;\n  }\n\n  function() external {\n    value = 1;\n  }\n}\n",
  "sourcePath": "contracts/mocks/RegressionImplementation.sol",
  "sourceMap": "57:178:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57:178:16;;;;;;;",
  "deployedSourceMap": "57:178:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;57:178:16;;;;;;;;;;;;;;;;;;;;;;;;168:65;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;168:65:16;;;;;;;;;;;;;;;;;:::i;:::-;;118:46;;;:::i;:::-;;168:65;221:7;213:5;:15;;;;168:65;:::o;118:46::-;1024:12:0;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;;;;;;1151:13;1129:35;;1174:14;1170:80;;;1213:4;1198:12;;:19;;;;;;;;;;;;;;;;;;1239:4;1225:11;;:18;;;;;;;;;;;;;;;;;;1170:80;1268:14;1264:55;;;1307:5;1292:12;;:20;;;;;;;;;;;;;;;;;;1264:55;118:46:16;:::o;1409:498:0:-;1456:4;1797:12;1820:4;1797:28;;1831:10;1876:4;1864:17;1858:23;;1901:1;1895:2;:7;1888:14;;;;1409:498;:::o",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_number",
          "type": "uint256"
        }
      ],
      "name": "setValue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/mocks/RegressionImplementation.sol",
    "exportedSymbols": {
      "Implementation1": [
        4181
      ],
      "Implementation2": [
        4210
      ],
      "Implementation3": [
        4243
      ],
      "Implementation4": [
        4280
      ]
    },
    "id": 4281,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4159,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "absolutePath": "contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 4160,
        "nodeType": "ImportDirective",
        "scope": 4281,
        "sourceUnit": 69,
        "src": "25:30:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4161,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 68,
              "src": "85:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$68",
                "typeString": "contract Initializable"
              }
            },
            "id": 4162,
            "nodeType": "InheritanceSpecifier",
            "src": "85:13:16"
          }
        ],
        "contractDependencies": [
          68
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4181,
        "linearizedBaseContracts": [
          4181,
          68
        ],
        "name": "Implementation1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4164,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 4181,
            "src": "103:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4163,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "103:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4169,
              "nodeType": "Block",
              "src": "159:5:16",
              "statements": []
            },
            "documentation": null,
            "id": 4170,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4167,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4166,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 43,
                  "src": "140:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "140:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "137:2:16"
            },
            "returnParameters": {
              "id": 4168,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "159:0:16"
            },
            "scope": 4181,
            "src": "118:46:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4179,
              "nodeType": "Block",
              "src": "207:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4175,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4164,
                      "src": "213:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4176,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4172,
                      "src": "221:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "213:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4178,
                  "nodeType": "ExpressionStatement",
                  "src": "213:15:16"
                }
              ]
            },
            "documentation": null,
            "id": 4180,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4172,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 4180,
                  "src": "186:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4171,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "186:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "185:14:16"
            },
            "returnParameters": {
              "id": 4174,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "207:0:16"
            },
            "scope": 4181,
            "src": "168:65:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4281,
        "src": "57:178:16"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4182,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 68,
              "src": "265:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$68",
                "typeString": "contract Initializable"
              }
            },
            "id": 4183,
            "nodeType": "InheritanceSpecifier",
            "src": "265:13:16"
          }
        ],
        "contractDependencies": [
          68
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4210,
        "linearizedBaseContracts": [
          4210,
          68
        ],
        "name": "Implementation2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4185,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 4210,
            "src": "283:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4184,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "283:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4190,
              "nodeType": "Block",
              "src": "339:5:16",
              "statements": []
            },
            "documentation": null,
            "id": 4191,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4188,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4187,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 43,
                  "src": "320:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "320:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4186,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "317:2:16"
            },
            "returnParameters": {
              "id": 4189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "339:0:16"
            },
            "scope": 4210,
            "src": "298:46:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4200,
              "nodeType": "Block",
              "src": "387:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4196,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4185,
                      "src": "393:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4197,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4193,
                      "src": "401:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "393:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4199,
                  "nodeType": "ExpressionStatement",
                  "src": "393:15:16"
                }
              ]
            },
            "documentation": null,
            "id": 4201,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4193,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 4201,
                  "src": "366:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4192,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "366:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "365:14:16"
            },
            "returnParameters": {
              "id": 4195,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "387:0:16"
            },
            "scope": 4210,
            "src": "348:65:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4208,
              "nodeType": "Block",
              "src": "464:23:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4206,
                    "name": "value",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4185,
                    "src": "477:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4205,
                  "id": 4207,
                  "nodeType": "Return",
                  "src": "470:12:16"
                }
              ]
            },
            "documentation": null,
            "id": 4209,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "434:2:16"
            },
            "returnParameters": {
              "id": 4205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4204,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4209,
                  "src": "458:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4203,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "458:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "457:6:16"
            },
            "scope": 4210,
            "src": "417:70:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4281,
        "src": "237:252:16"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4211,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 68,
              "src": "519:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$68",
                "typeString": "contract Initializable"
              }
            },
            "id": 4212,
            "nodeType": "InheritanceSpecifier",
            "src": "519:13:16"
          }
        ],
        "contractDependencies": [
          68
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4243,
        "linearizedBaseContracts": [
          4243,
          68
        ],
        "name": "Implementation3",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4214,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 4243,
            "src": "537:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4213,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "537:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4219,
              "nodeType": "Block",
              "src": "593:5:16",
              "statements": []
            },
            "documentation": null,
            "id": 4220,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4217,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4216,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 43,
                  "src": "574:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "574:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4215,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "571:2:16"
            },
            "returnParameters": {
              "id": 4218,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "593:0:16"
            },
            "scope": 4243,
            "src": "552:46:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4229,
              "nodeType": "Block",
              "src": "641:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4225,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4214,
                      "src": "647:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4226,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4222,
                      "src": "655:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "647:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4228,
                  "nodeType": "ExpressionStatement",
                  "src": "647:15:16"
                }
              ]
            },
            "documentation": null,
            "id": 4230,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4223,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4222,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 4230,
                  "src": "620:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4221,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "619:14:16"
            },
            "returnParameters": {
              "id": 4224,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "641:0:16"
            },
            "scope": 4243,
            "src": "602:65:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4241,
              "nodeType": "Block",
              "src": "730:33:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4237,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4214,
                      "src": "743:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4238,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4232,
                      "src": "751:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "743:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4236,
                  "id": 4240,
                  "nodeType": "Return",
                  "src": "736:22:16"
                }
              ]
            },
            "documentation": null,
            "id": 4242,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4232,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 4242,
                  "src": "689:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4231,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "689:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "688:14:16"
            },
            "returnParameters": {
              "id": 4236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4242,
                  "src": "724:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4234,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "723:6:16"
            },
            "scope": 4243,
            "src": "671:92:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4281,
        "src": "491:274:16"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4244,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 68,
              "src": "795:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$68",
                "typeString": "contract Initializable"
              }
            },
            "id": 4245,
            "nodeType": "InheritanceSpecifier",
            "src": "795:13:16"
          }
        ],
        "contractDependencies": [
          68
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4280,
        "linearizedBaseContracts": [
          4280,
          68
        ],
        "name": "Implementation4",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4247,
            "name": "value",
            "nodeType": "VariableDeclaration",
            "scope": 4280,
            "src": "813:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4246,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "813:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4252,
              "nodeType": "Block",
              "src": "869:5:16",
              "statements": []
            },
            "documentation": null,
            "id": 4253,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4250,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4249,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 43,
                  "src": "850:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "850:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4248,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "847:2:16"
            },
            "returnParameters": {
              "id": 4251,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "869:0:16"
            },
            "scope": 4280,
            "src": "828:46:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4262,
              "nodeType": "Block",
              "src": "917:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4258,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4247,
                      "src": "923:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4259,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4255,
                      "src": "931:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "923:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4261,
                  "nodeType": "ExpressionStatement",
                  "src": "923:15:16"
                }
              ]
            },
            "documentation": null,
            "id": 4263,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4255,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 4263,
                  "src": "896:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4254,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "896:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "895:14:16"
            },
            "returnParameters": {
              "id": 4257,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "917:0:16"
            },
            "scope": 4280,
            "src": "878:65:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4270,
              "nodeType": "Block",
              "src": "994:23:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4268,
                    "name": "value",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4247,
                    "src": "1007:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4267,
                  "id": 4269,
                  "nodeType": "Return",
                  "src": "1000:12:16"
                }
              ]
            },
            "documentation": null,
            "id": 4271,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValue",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4264,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "964:2:16"
            },
            "returnParameters": {
              "id": 4267,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4266,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 4271,
                  "src": "988:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4265,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "988:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "987:6:16"
            },
            "scope": 4280,
            "src": "947:70:16",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4278,
              "nodeType": "Block",
              "src": "1041:20:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4274,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4247,
                      "src": "1047:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1055:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1047:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4277,
                  "nodeType": "ExpressionStatement",
                  "src": "1047:9:16"
                }
              ]
            },
            "documentation": null,
            "id": 4279,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4272,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1029:2:16"
            },
            "returnParameters": {
              "id": 4273,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1041:0:16"
            },
            "scope": 4280,
            "src": "1021:40:16",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 4281,
        "src": "767:296:16"
      }
    ],
    "src": "0:1064:16"
  },
  "bytecode": "0x608060405234801561001057600080fd5b506101ef806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063552410771461003b5780638129fc1c14610069575b600080fd5b6100676004803603602081101561005157600080fd5b8101908080359060200190929190505050610073565b005b61007161007d565b005b8060338190555050565b600060019054906101000a900460ff168061009c575061009b61017e565b5b806100b357506000809054906101000a900460ff16155b151561010a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610196602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561015a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561017b5760008060016101000a81548160ff0219169083151502179055505b50565b6000803090506000813b905060008114925050509056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a165627a7a72305820ecff767ca997620af7815cb1f4581177c246b82062e8e4edfda9f1ea57c03ab90029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063552410771461003b5780638129fc1c14610069575b600080fd5b6100676004803603602081101561005157600080fd5b8101908080359060200190929190505050610073565b005b61007161007d565b005b8060338190555050565b600060019054906101000a900460ff168061009c575061009b61017e565b5b806100b357506000809054906101000a900460ff16155b151561010a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610196602e913960400191505060405180910390fd5b60008060019054906101000a900460ff16159050801561015a576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561017b5760008060016101000a81548160ff0219169083151502179055505b50565b6000803090506000813b905060008114925050509056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a165627a7a72305820ecff767ca997620af7815cb1f4581177c246b82062e8e4edfda9f1ea57c03ab90029",
  "compiler": {
    "name": "solc",
    "version": "0.5.3+commit.10d17f24.Emscripten.clang",
    "optimizer": {},
    "evmVersion": "constantinople"
  }
}
