{
  "fileName": "RegressionImplementation.sol",
  "contractName": "Implementation4",
  "source": "pragma solidity ^0.6.0;\n// SPDX-License-Identifier: MIT\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  fallback() external {\n    value = 1;\n  }\n}\n",
  "sourcePath": "contracts/mocks/RegressionImplementation.sol",
  "sourceMap": "799:296:16:-:0;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "799:296:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1053:40;1087:1;1079:5;;:9;;;;;;;1053:40;799:296;979:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;910:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;860:46;;;:::i;:::-;;979:70;1020:4;1039:5;;;;1032:12;;;;979:70;;:::o;910:65::-;963:7;955:5;;:15;;;;;;;910:65;;:::o;860:46::-;1056:12:0;;;;;;;;;;;:31;;;;1072:15;:13;:15;;:::i;:::-;1056:31;:47;;;;1092:11;;;;;;;;;;;1091:12;1056:47;1048:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1161:19;1184:12;;;;;;;;;;;1183:13;1161:35;;1206:14;1202:80;;;1245:4;1230:12;;:19;;;;;;;;;;;;;;;;;;1271:4;1257:11;;:18;;;;;;;;;;;;;;;;;;1202:80;1288:1:::1;1300:14:::0;1296:55;;;1339:5;1324:12;;:20;;;;;;;;;;;;;;;;;;1296:55;860:46:16;;:::o;1441:498:0:-;1488:4;1829:12;1852:4;1829:28;;1863:10;1908:4;1896:17;1890:23;;1933:1;1927:2;:7;1920:14;;;;;;1441:498;;;;:::o",
  "abi": [
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "getValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_number",
          "type": "uint256"
        }
      ],
      "name": "setValue",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "contracts/mocks/RegressionImplementation.sol",
    "exportedSymbols": {
      "Implementation1": [
        4401
      ],
      "Implementation2": [
        4430
      ],
      "Implementation3": [
        4463
      ],
      "Implementation4": [
        4500
      ]
    },
    "id": 4501,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4379,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:16"
      },
      {
        "absolutePath": "contracts/Initializable.sol",
        "file": "../Initializable.sol",
        "id": 4380,
        "nodeType": "ImportDirective",
        "scope": 4501,
        "sourceUnit": 75,
        "src": "57:30:16",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4381,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "117:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4382,
            "nodeType": "InheritanceSpecifier",
            "src": "117:13:16"
          }
        ],
        "contractDependencies": [
          74
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4401,
        "linearizedBaseContracts": [
          4401,
          74
        ],
        "name": "Implementation1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4384,
            "mutability": "mutable",
            "name": "value",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4401,
            "src": "135:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4383,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "135:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4389,
              "nodeType": "Block",
              "src": "191:5:16",
              "statements": []
            },
            "documentation": null,
            "functionSelector": "8129fc1c",
            "id": 4390,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4387,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4386,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "172:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "172:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4385,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "169:2:16"
            },
            "returnParameters": {
              "id": 4388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "191:0:16"
            },
            "scope": 4401,
            "src": "150:46:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4399,
              "nodeType": "Block",
              "src": "239:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4395,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4384,
                      "src": "245:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4396,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4392,
                      "src": "253:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "245:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4398,
                  "nodeType": "ExpressionStatement",
                  "src": "245:15:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "55241077",
            "id": 4400,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4393,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4392,
                  "mutability": "mutable",
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4400,
                  "src": "218:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4391,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "218:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "217:14:16"
            },
            "returnParameters": {
              "id": 4394,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "239:0:16"
            },
            "scope": 4401,
            "src": "200:65:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4501,
        "src": "89:178:16"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4402,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "297:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4403,
            "nodeType": "InheritanceSpecifier",
            "src": "297:13:16"
          }
        ],
        "contractDependencies": [
          74
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4430,
        "linearizedBaseContracts": [
          4430,
          74
        ],
        "name": "Implementation2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4405,
            "mutability": "mutable",
            "name": "value",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4430,
            "src": "315:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4404,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "315:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4410,
              "nodeType": "Block",
              "src": "371:5:16",
              "statements": []
            },
            "documentation": null,
            "functionSelector": "8129fc1c",
            "id": 4411,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4408,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4407,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "352:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "352:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "349:2:16"
            },
            "returnParameters": {
              "id": 4409,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "371:0:16"
            },
            "scope": 4430,
            "src": "330:46:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4420,
              "nodeType": "Block",
              "src": "419:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4416,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4405,
                      "src": "425:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4417,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4413,
                      "src": "433:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "425:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4419,
                  "nodeType": "ExpressionStatement",
                  "src": "425:15:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "55241077",
            "id": 4421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4413,
                  "mutability": "mutable",
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4421,
                  "src": "398:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4412,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "398:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "397:14:16"
            },
            "returnParameters": {
              "id": 4415,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "419:0:16"
            },
            "scope": 4430,
            "src": "380:65:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4428,
              "nodeType": "Block",
              "src": "496:23:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4426,
                    "name": "value",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4405,
                    "src": "509:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4425,
                  "id": 4427,
                  "nodeType": "Return",
                  "src": "502:12:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "20965255",
            "id": 4429,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "466:2:16"
            },
            "returnParameters": {
              "id": 4425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4424,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4429,
                  "src": "490:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4423,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "490:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "489:6:16"
            },
            "scope": 4430,
            "src": "449:70:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4501,
        "src": "269:252:16"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4431,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "551:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4432,
            "nodeType": "InheritanceSpecifier",
            "src": "551:13:16"
          }
        ],
        "contractDependencies": [
          74
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4463,
        "linearizedBaseContracts": [
          4463,
          74
        ],
        "name": "Implementation3",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4434,
            "mutability": "mutable",
            "name": "value",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4463,
            "src": "569:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4433,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "569:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4439,
              "nodeType": "Block",
              "src": "625:5:16",
              "statements": []
            },
            "documentation": null,
            "functionSelector": "8129fc1c",
            "id": 4440,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4437,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4436,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "606:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "606:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "603:2:16"
            },
            "returnParameters": {
              "id": 4438,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "625:0:16"
            },
            "scope": 4463,
            "src": "584:46:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4449,
              "nodeType": "Block",
              "src": "673:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4445,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4434,
                      "src": "679:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4446,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4442,
                      "src": "687:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "679:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4448,
                  "nodeType": "ExpressionStatement",
                  "src": "679:15:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "55241077",
            "id": 4450,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4443,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4442,
                  "mutability": "mutable",
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4450,
                  "src": "652:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4441,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "651:14:16"
            },
            "returnParameters": {
              "id": 4444,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "673:0:16"
            },
            "scope": 4463,
            "src": "634:65:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4461,
              "nodeType": "Block",
              "src": "762:33:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4457,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4434,
                      "src": "775:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4458,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4452,
                      "src": "783:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "775:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4456,
                  "id": 4460,
                  "nodeType": "Return",
                  "src": "768:22:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0ff4c916",
            "id": 4462,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4452,
                  "mutability": "mutable",
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4462,
                  "src": "721:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4451,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "721:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "720:14:16"
            },
            "returnParameters": {
              "id": 4456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4455,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4462,
                  "src": "756:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4454,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "756:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "755:6:16"
            },
            "scope": 4463,
            "src": "703:92:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4501,
        "src": "523:274:16"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4464,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 74,
              "src": "827:13:16",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$74",
                "typeString": "contract Initializable"
              }
            },
            "id": 4465,
            "nodeType": "InheritanceSpecifier",
            "src": "827:13:16"
          }
        ],
        "contractDependencies": [
          74
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 4500,
        "linearizedBaseContracts": [
          4500,
          74
        ],
        "name": "Implementation4",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 4467,
            "mutability": "mutable",
            "name": "value",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4500,
            "src": "845:10:16",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 4466,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "845:4:16",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4472,
              "nodeType": "Block",
              "src": "901:5:16",
              "statements": []
            },
            "documentation": null,
            "functionSelector": "8129fc1c",
            "id": 4473,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4470,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4469,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 47,
                  "src": "882:11:16",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "882:11:16"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4468,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "879:2:16"
            },
            "returnParameters": {
              "id": 4471,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "901:0:16"
            },
            "scope": 4500,
            "src": "860:46:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4482,
              "nodeType": "Block",
              "src": "949:26:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4478,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4467,
                      "src": "955:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4479,
                      "name": "_number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4475,
                      "src": "963:7:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "955:15:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4481,
                  "nodeType": "ExpressionStatement",
                  "src": "955:15:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "55241077",
            "id": 4483,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4475,
                  "mutability": "mutable",
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4483,
                  "src": "928:12:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4474,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "928:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "927:14:16"
            },
            "returnParameters": {
              "id": 4477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "949:0:16"
            },
            "scope": 4500,
            "src": "910:65:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4490,
              "nodeType": "Block",
              "src": "1026:23:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4488,
                    "name": "value",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4467,
                    "src": "1039:5:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4487,
                  "id": 4489,
                  "nodeType": "Return",
                  "src": "1032:12:16"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "20965255",
            "id": 4491,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getValue",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "996:2:16"
            },
            "returnParameters": {
              "id": 4487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4486,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4491,
                  "src": "1020:4:16",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4485,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1020:4:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1019:6:16"
            },
            "scope": 4500,
            "src": "979:70:16",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4498,
              "nodeType": "Block",
              "src": "1073:20:16",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4494,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4467,
                      "src": "1079:5:16",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1087:1:16",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1079:9:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4497,
                  "nodeType": "ExpressionStatement",
                  "src": "1079:9:16"
                }
              ]
            },
            "documentation": null,
            "id": 4499,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4492,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1061:2:16"
            },
            "returnParameters": {
              "id": 4493,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1073:0:16"
            },
            "scope": 4500,
            "src": "1053:40:16",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 4501,
        "src": "799:296:16"
      }
    ],
    "src": "0:1096:16"
  },
  "bytecode": "0x60806040523480156100115760006000fd5b50610017565b610261806100266000396000f3fe60806040523480156100115760006000fd5b50600436106100465760003560e01c8063209652551461005857806355241077146100765780638129fc1c146100a557610047565b5b5b600160336000508190909055505b005b6100606100af565b6040518082815260200191505060405180910390f35b6100a36004803603602081101561008d5760006000fd5b81019080803590602001909291905050506100c1565b005b6100ad6100d1565b005b600060336000505490506100be565b90565b8060336000508190909055505b50565b600060019054906101000a900460ff16806100f657506100f56101de63ffffffff16565b5b8061010e5750600060009054906101000a900460ff16155b1515610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806101fe602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff1615905080156101b7576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b5b80156101da576000600060016101000a81548160ff0219169083151502179055505b505b565b600060003090506000813b905060008114925050506101fa5650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122089bf31a2f51bd372e9052c217a68e26b76ff0e94f13de80a35e2405fd8098ec264736f6c634300060a0033",
  "deployedBytecode": "0x60806040523480156100115760006000fd5b50600436106100465760003560e01c8063209652551461005857806355241077146100765780638129fc1c146100a557610047565b5b5b600160336000508190909055505b005b6100606100af565b6040518082815260200191505060405180910390f35b6100a36004803603602081101561008d5760006000fd5b81019080803590602001909291905050506100c1565b005b6100ad6100d1565b005b600060336000505490506100be565b90565b8060336000508190909055505b50565b600060019054906101000a900460ff16806100f657506100f56101de63ffffffff16565b5b8061010e5750600060009054906101000a900460ff16155b1515610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806101fe602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff1615905080156101b7576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b5b80156101da576000600060016101000a81548160ff0219169083151502179055505b505b565b600060003090506000813b905060008114925050506101fa5650505b9056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122089bf31a2f51bd372e9052c217a68e26b76ff0e94f13de80a35e2405fd8098ec264736f6c634300060a0033",
  "compiler": {
    "name": "solc",
    "version": "0.6.10+commit.00c0fcaf.Emscripten.clang",
    "optimizer": {},
    "evmVersion": "constantinople"
  }
}
