{
  "contractName": "Tick",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Tick\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains functions for managing tick processes and relevant calculations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol\":\"Tick\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x2fcb84bece328675849d09dee9439901fd14c852efa2cb84a7dd1ada04a90a1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce303eb639ca62f247a8a49a65f15b25b931fbd64b176c2180a6ea790f99bb11\",\"dweb:/ipfs/QmXehfxvPATibRJ2JWWBnLbDyA7hMk5jWCxidpJfDKGQVD\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xf2583083971cf8a4274e14515aabbf9f4855193e34fe2addb0ca7b1589519b0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbf0ada2bba8827d459101a2359e4682be749b9ddd0a3c44f26119c9a0898e82\",\"dweb:/ipfs/QmPmKotXLza9j7sjNaXSYY9XbyZhkkQ3nMeWE9tiHKeouC\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0x4a12ab60fdb663b341bb3a2f5c6631ba40b7b6fa9d131c9540b60dbb4196a27e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d55e89b639f5ea027798cf3f246f38209308e812b8e568d19aa487bcdc8008a0\",\"dweb:/ipfs/QmfRWZGxKK21EgQea2PLxgJ6aypEbQjQSotHiruXGmKVm6\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol\":{\"keccak256\":\"0xdabed554c4b1fea880edd6cf571840824de530ce51d6c9703cad19221590af5a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://160fc25b4e616c2b51f50a49289c43f269f049d7834c48eafe3356048d9f7824\",\"dweb:/ipfs/QmNbtt4nCxonZ7qfzTuoain4Wo3KiSBmuczP6PexcFnKj6\"]},\"/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x1f864a2bf61ba05f3173eaf2e3f94c5e1da4bec0554757527b6d1ef1fe439e4e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5139b586df546a9d1c46804ca400b1cb9ce87236eaf212ebd64edee6747a172a\",\"dweb:/ipfs/QmVa2kcRw3VyuB6j1EVWXACKnkbQZgfXYXNi5voq3XkYG8\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220732dd8f5e256991b9e7152b1fac8e95d2b2d88b9f550b41efa7329302be2355564736f6c63430007060033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220732dd8f5e256991b9e7152b1fac8e95d2b2d88b9f550b41efa7329302be2355564736f6c63430007060033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "277:9423:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "277:9423:28:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './LowGasSafeMath.sol';\nimport './SafeCast.sol';\n\nimport './TickMath.sol';\nimport './LiquidityMath.sol';\n\n/// @title Tick\n/// @notice Contains functions for managing tick processes and relevant calculations\nlibrary Tick {\n    using LowGasSafeMath for int256;\n    using SafeCast for int256;\n\n    // info stored for each initialized individual tick\n    struct Info {\n        // the total position liquidity that references this tick\n        uint128 liquidityGross;\n        // amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left),\n        int128 liquidityNet;\n        // fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\n        uint256 feeGrowthOutside0X128;\n        uint256 feeGrowthOutside1X128;\n        // the cumulative tick value on the other side of the tick\n        int56 tickCumulativeOutside;\n        // the seconds per unit of liquidity on the _other_ side of this tick (relative to the current tick)\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\n        uint160 secondsPerLiquidityOutsideX128;\n        // the seconds spent on the other side of the tick (relative to the current tick)\n        // only has relative meaning, not absolute — the value depends on when the tick is initialized\n        uint32 secondsOutside;\n        // true iff the tick is initialized, i.e. the value is exactly equivalent to the expression liquidityGross != 0\n        // these 8 bits are set to prevent fresh sstores when crossing newly initialized ticks\n        bool initialized;\n    }\n\n    /// @notice Derives max liquidity per tick from given tick spacing\n    /// @dev Executed within the pool constructor\n    /// @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\n    ///     e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\n    /// @return The max liquidity per tick\n    function tickSpacingToMaxLiquidityPerTick(int24 tickSpacing) internal pure returns (uint128) {\n        int24 minTick = (TickMath.MIN_TICK / tickSpacing) * tickSpacing;\n        int24 maxTick = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;\n        uint24 numTicks = uint24((maxTick - minTick) / tickSpacing) + 1;\n        return type(uint128).max / numTicks;\n    }\n\n    /// @notice Retrieves fee growth data\n    /// @param self The mapping containing all tick information for initialized ticks\n    /// @param tickLower The lower tick boundary of the position\n    /// @param tickUpper The upper tick boundary of the position\n    /// @param tickCurrent The current tick\n    /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n    /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n    /// @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n    /// @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries\n    function getFeeGrowthInside(\n        mapping(int24 => Tick.Info) storage self,\n        int24 tickLower,\n        int24 tickUpper,\n        int24 tickCurrent,\n        uint256 feeGrowthGlobal0X128,\n        uint256 feeGrowthGlobal1X128\n    ) internal view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) {\n        Info storage lower = self[tickLower];\n        Info storage upper = self[tickUpper];\n\n        // calculate fee growth below\n        uint256 feeGrowthBelow0X128;\n        uint256 feeGrowthBelow1X128;\n        if (tickCurrent >= tickLower) {\n            feeGrowthBelow0X128 = lower.feeGrowthOutside0X128;\n            feeGrowthBelow1X128 = lower.feeGrowthOutside1X128;\n        } else {\n            feeGrowthBelow0X128 = feeGrowthGlobal0X128 - lower.feeGrowthOutside0X128;\n            feeGrowthBelow1X128 = feeGrowthGlobal1X128 - lower.feeGrowthOutside1X128;\n        }\n\n        // calculate fee growth above\n        uint256 feeGrowthAbove0X128;\n        uint256 feeGrowthAbove1X128;\n        if (tickCurrent < tickUpper) {\n            feeGrowthAbove0X128 = upper.feeGrowthOutside0X128;\n            feeGrowthAbove1X128 = upper.feeGrowthOutside1X128;\n        } else {\n            feeGrowthAbove0X128 = feeGrowthGlobal0X128 - upper.feeGrowthOutside0X128;\n            feeGrowthAbove1X128 = feeGrowthGlobal1X128 - upper.feeGrowthOutside1X128;\n        }\n\n        feeGrowthInside0X128 = feeGrowthGlobal0X128 - feeGrowthBelow0X128 - feeGrowthAbove0X128;\n        feeGrowthInside1X128 = feeGrowthGlobal1X128 - feeGrowthBelow1X128 - feeGrowthAbove1X128;\n    }\n\n    /// @notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\n    /// @param self The mapping containing all tick information for initialized ticks\n    /// @param tick The tick that will be updated\n    /// @param tickCurrent The current tick\n    /// @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\n    /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n    /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n    /// @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n    /// @param tickCumulative The tick * time elapsed since the pool was first initialized\n    /// @param time The current block timestamp cast to a uint32\n    /// @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n    /// @param maxLiquidity The maximum liquidity allocation for a single tick\n    /// @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa\n    function update(\n        mapping(int24 => Tick.Info) storage self,\n        int24 tick,\n        int24 tickCurrent,\n        int128 liquidityDelta,\n        uint256 feeGrowthGlobal0X128,\n        uint256 feeGrowthGlobal1X128,\n        uint160 secondsPerLiquidityCumulativeX128,\n        int56 tickCumulative,\n        uint32 time,\n        bool upper,\n        uint128 maxLiquidity\n    ) internal returns (bool flipped) {\n        Tick.Info storage info = self[tick];\n\n        uint128 liquidityGrossBefore = info.liquidityGross;\n        uint128 liquidityGrossAfter = LiquidityMath.addDelta(liquidityGrossBefore, liquidityDelta);\n\n        require(liquidityGrossAfter <= maxLiquidity, 'LO');\n\n        flipped = (liquidityGrossAfter == 0) != (liquidityGrossBefore == 0);\n\n        if (liquidityGrossBefore == 0) {\n            // by convention, we assume that all growth before a tick was initialized happened _below_ the tick\n            if (tick <= tickCurrent) {\n                info.feeGrowthOutside0X128 = feeGrowthGlobal0X128;\n                info.feeGrowthOutside1X128 = feeGrowthGlobal1X128;\n                info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128;\n                info.tickCumulativeOutside = tickCumulative;\n                info.secondsOutside = time;\n            }\n            info.initialized = true;\n        }\n\n        info.liquidityGross = liquidityGrossAfter;\n\n        // when the lower (upper) tick is crossed left to right (right to left), liquidity must be added (removed)\n        info.liquidityNet = upper\n            ? int256(info.liquidityNet).sub(liquidityDelta).toInt128()\n            : int256(info.liquidityNet).add(liquidityDelta).toInt128();\n    }\n\n    /// @notice Clears tick data\n    /// @param self The mapping containing all initialized tick information for initialized ticks\n    /// @param tick The tick that will be cleared\n    function clear(mapping(int24 => Tick.Info) storage self, int24 tick) internal {\n        delete self[tick];\n    }\n\n    /// @notice Transitions to next tick as needed by price movement\n    /// @param self The mapping containing all tick information for initialized ticks\n    /// @param tick The destination tick of the transition\n    /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n    /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n    /// @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n    /// @param tickCumulative The tick * time elapsed since the pool was first initialized\n    /// @param time The current block.timestamp\n    /// @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)\n    function cross(\n        mapping(int24 => Tick.Info) storage self,\n        int24 tick,\n        uint256 feeGrowthGlobal0X128,\n        uint256 feeGrowthGlobal1X128,\n        uint160 secondsPerLiquidityCumulativeX128,\n        int56 tickCumulative,\n        uint32 time\n    ) internal returns (int128 liquidityNet) {\n        Tick.Info storage info = self[tick];\n        info.feeGrowthOutside0X128 = feeGrowthGlobal0X128 - info.feeGrowthOutside0X128;\n        info.feeGrowthOutside1X128 = feeGrowthGlobal1X128 - info.feeGrowthOutside1X128;\n        info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128 - info.secondsPerLiquidityOutsideX128;\n        info.tickCumulativeOutside = tickCumulative - info.tickCumulativeOutside;\n        info.secondsOutside = time - info.secondsOutside;\n        liquidityNet = info.liquidityNet;\n    }\n}\n",
  "sourcePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol",
  "ast": {
    "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol",
    "exportedSymbols": {
      "LiquidityMath": [
        4042
      ],
      "LowGasSafeMath": [
        4172
      ],
      "SafeCast": [
        5150
      ],
      "Tick": [
        6379
      ],
      "TickMath": [
        7170
      ]
    },
    "id": 6380,
    "license": "BUSL-1.1",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5929,
        "literals": [
          "solidity",
          ">=",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:24:28"
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LowGasSafeMath.sol",
        "file": "./LowGasSafeMath.sol",
        "id": 5930,
        "nodeType": "ImportDirective",
        "scope": 6380,
        "sourceUnit": 4173,
        "src": "63:30:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SafeCast.sol",
        "file": "./SafeCast.sol",
        "id": 5931,
        "nodeType": "ImportDirective",
        "scope": 6380,
        "sourceUnit": 5151,
        "src": "94:24:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickMath.sol",
        "file": "./TickMath.sol",
        "id": 5932,
        "nodeType": "ImportDirective",
        "scope": 6380,
        "sourceUnit": 7171,
        "src": "120:24:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LiquidityMath.sol",
        "file": "./LiquidityMath.sol",
        "id": 5933,
        "nodeType": "ImportDirective",
        "scope": 6380,
        "sourceUnit": 4043,
        "src": "145:29:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 5934,
          "nodeType": "StructuredDocumentation",
          "src": "176:101:28",
          "text": "@title Tick\n @notice Contains functions for managing tick processes and relevant calculations"
        },
        "fullyImplemented": true,
        "id": 6379,
        "linearizedBaseContracts": [
          6379
        ],
        "name": "Tick",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 5937,
            "libraryName": {
              "id": 5935,
              "name": "LowGasSafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4172,
              "src": "302:14:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LowGasSafeMath_$4172",
                "typeString": "library LowGasSafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "296:32:28",
            "typeName": {
              "id": 5936,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "321:6:28",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "id": 5940,
            "libraryName": {
              "id": 5938,
              "name": "SafeCast",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5150,
              "src": "339:8:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeCast_$5150",
                "typeString": "library SafeCast"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "333:26:28",
            "typeName": {
              "id": 5939,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "352:6:28",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "canonicalName": "Tick.Info",
            "id": 5957,
            "members": [
              {
                "constant": false,
                "id": 5942,
                "mutability": "mutable",
                "name": "liquidityGross",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "509:22:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 5941,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "509:7:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5944,
                "mutability": "mutable",
                "name": "liquidityNet",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "652:19:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int128",
                  "typeString": "int128"
                },
                "typeName": {
                  "id": 5943,
                  "name": "int128",
                  "nodeType": "ElementaryTypeName",
                  "src": "652:6:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5946,
                "mutability": "mutable",
                "name": "feeGrowthOutside0X128",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "894:29:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5945,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "894:7:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5948,
                "mutability": "mutable",
                "name": "feeGrowthOutside1X128",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "933:29:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5947,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "933:7:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5950,
                "mutability": "mutable",
                "name": "tickCumulativeOutside",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "1039:27:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_int56",
                  "typeString": "int56"
                },
                "typeName": {
                  "id": 5949,
                  "name": "int56",
                  "nodeType": "ElementaryTypeName",
                  "src": "1039:5:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int56",
                    "typeString": "int56"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5952,
                "mutability": "mutable",
                "name": "secondsPerLiquidityOutsideX128",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "1290:38:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 5951,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "1290:7:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5954,
                "mutability": "mutable",
                "name": "secondsOutside",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "1533:21:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 5953,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1533:6:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5956,
                "mutability": "mutable",
                "name": "initialized",
                "nodeType": "VariableDeclaration",
                "scope": 5957,
                "src": "1779:16:28",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 5955,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1779:4:28",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Info",
            "nodeType": "StructDefinition",
            "scope": 6379,
            "src": "421:1381:28",
            "visibility": "public"
          },
          {
            "body": {
              "id": 6007,
              "nodeType": "Block",
              "src": "2288:271:28",
              "statements": [
                {
                  "assignments": [
                    5966
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5966,
                      "mutability": "mutable",
                      "name": "minTick",
                      "nodeType": "VariableDeclaration",
                      "scope": 6007,
                      "src": "2298:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 5965,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "2298:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5974,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 5973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 5970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5967,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7170,
                              "src": "2315:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 5968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "MIN_TICK",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6643,
                            "src": "2315:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 5969,
                            "name": "tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5960,
                            "src": "2335:11:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "2315:31:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "id": 5971,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "2314:33:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "id": 5972,
                      "name": "tickSpacing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5960,
                      "src": "2350:11:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "2314:47:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2298:63:28"
                },
                {
                  "assignments": [
                    5976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5976,
                      "mutability": "mutable",
                      "name": "maxTick",
                      "nodeType": "VariableDeclaration",
                      "scope": 6007,
                      "src": "2371:13:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 5975,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "2371:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5984,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 5983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 5980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5977,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7170,
                              "src": "2388:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$7170_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 5978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "MAX_TICK",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6648,
                            "src": "2388:17:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 5979,
                            "name": "tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5960,
                            "src": "2408:11:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "2388:31:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "id": 5981,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "2387:33:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "id": 5982,
                      "name": "tickSpacing",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5960,
                      "src": "2423:11:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "2387:47:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2371:63:28"
                },
                {
                  "assignments": [
                    5986
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5986,
                      "mutability": "mutable",
                      "name": "numTicks",
                      "nodeType": "VariableDeclaration",
                      "scope": 6007,
                      "src": "2444:15:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint24",
                        "typeString": "uint24"
                      },
                      "typeName": {
                        "id": 5985,
                        "name": "uint24",
                        "nodeType": "ElementaryTypeName",
                        "src": "2444:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5998,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    },
                    "id": 5997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 5994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 5991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5989,
                                  "name": "maxTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5976,
                                  "src": "2470:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 5990,
                                  "name": "minTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5966,
                                  "src": "2480:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "2470:17:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "id": 5992,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2469:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 5993,
                            "name": "tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5960,
                            "src": "2491:11:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "2469:33:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        ],
                        "id": 5988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2462:6:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint24_$",
                          "typeString": "type(uint24)"
                        },
                        "typeName": {
                          "id": 5987,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2462:6:28",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 5995,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2462:41:28",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint24",
                        "typeString": "uint24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 5996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2506:1:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2462:45:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2444:63:28"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 6005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "arguments": [
                          {
                            "id": 6001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2529:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": {
                              "id": 6000,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "2529:7:28",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            }
                          ],
                          "id": 5999,
                          "name": "type",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967269,
                          "src": "2524:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                            "typeString": "function () pure"
                          }
                        },
                        "id": 6002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2524:13:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_meta_type_t_uint128",
                          "typeString": "type(uint128)"
                        }
                      },
                      "id": 6003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "max",
                      "nodeType": "MemberAccess",
                      "src": "2524:17:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 6004,
                      "name": "numTicks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5986,
                      "src": "2544:8:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint24",
                        "typeString": "uint24"
                      }
                    },
                    "src": "2524:28:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 5964,
                  "id": 6006,
                  "nodeType": "Return",
                  "src": "2517:35:28"
                }
              ]
            },
            "documentation": {
              "id": 5958,
              "nodeType": "StructuredDocumentation",
              "src": "1808:382:28",
              "text": "@notice Derives max liquidity per tick from given tick spacing\n @dev Executed within the pool constructor\n @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\n     e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\n @return The max liquidity per tick"
            },
            "id": 6008,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tickSpacingToMaxLiquidityPerTick",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5961,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5960,
                  "mutability": "mutable",
                  "name": "tickSpacing",
                  "nodeType": "VariableDeclaration",
                  "scope": 6008,
                  "src": "2237:17:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 5959,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "2237:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2236:19:28"
            },
            "returnParameters": {
              "id": 5964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5963,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6008,
                  "src": "2279:7:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 5962,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2279:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2278:9:28"
            },
            "scope": 6379,
            "src": "2195:364:28",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6130,
              "nodeType": "Block",
              "src": "3655:1249:28",
              "statements": [
                {
                  "assignments": [
                    6031
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6031,
                      "mutability": "mutable",
                      "name": "lower",
                      "nodeType": "VariableDeclaration",
                      "scope": 6130,
                      "src": "3665:18:28",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      },
                      "typeName": {
                        "id": 6030,
                        "name": "Info",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5957,
                        "src": "3665:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6035,
                  "initialValue": {
                    "baseExpression": {
                      "id": 6032,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6013,
                      "src": "3686:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                        "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                      }
                    },
                    "id": 6034,
                    "indexExpression": {
                      "id": 6033,
                      "name": "tickLower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6015,
                      "src": "3691:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3686:15:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$5957_storage",
                      "typeString": "struct Tick.Info storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3665:36:28"
                },
                {
                  "assignments": [
                    6037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6037,
                      "mutability": "mutable",
                      "name": "upper",
                      "nodeType": "VariableDeclaration",
                      "scope": 6130,
                      "src": "3711:18:28",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      },
                      "typeName": {
                        "id": 6036,
                        "name": "Info",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5957,
                        "src": "3711:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6041,
                  "initialValue": {
                    "baseExpression": {
                      "id": 6038,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6013,
                      "src": "3732:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                        "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                      }
                    },
                    "id": 6040,
                    "indexExpression": {
                      "id": 6039,
                      "name": "tickUpper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6017,
                      "src": "3737:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3732:15:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$5957_storage",
                      "typeString": "struct Tick.Info storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3711:36:28"
                },
                {
                  "assignments": [
                    6043
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6043,
                      "mutability": "mutable",
                      "name": "feeGrowthBelow0X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 6130,
                      "src": "3796:27:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6042,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3796:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6044,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3796:27:28"
                },
                {
                  "assignments": [
                    6046
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6046,
                      "mutability": "mutable",
                      "name": "feeGrowthBelow1X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 6130,
                      "src": "3833:27:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6045,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3833:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6047,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3833:27:28"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 6050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6048,
                      "name": "tickCurrent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6019,
                      "src": "3874:11:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "id": 6049,
                      "name": "tickLower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6015,
                      "src": "3889:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "3874:24:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 6076,
                    "nodeType": "Block",
                    "src": "4043:183:28",
                    "statements": [
                      {
                        "expression": {
                          "id": 6067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6062,
                            "name": "feeGrowthBelow0X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6043,
                            "src": "4057:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6063,
                              "name": "feeGrowthGlobal0X128",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6021,
                              "src": "4079:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 6064,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6031,
                                "src": "4102:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 6065,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "feeGrowthOutside0X128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5946,
                              "src": "4102:27:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4079:50:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4057:72:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6068,
                        "nodeType": "ExpressionStatement",
                        "src": "4057:72:28"
                      },
                      {
                        "expression": {
                          "id": 6074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6069,
                            "name": "feeGrowthBelow1X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6046,
                            "src": "4143:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6070,
                              "name": "feeGrowthGlobal1X128",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6023,
                              "src": "4165:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 6071,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6031,
                                "src": "4188:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 6072,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "feeGrowthOutside1X128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5948,
                              "src": "4188:27:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4165:50:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4143:72:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6075,
                        "nodeType": "ExpressionStatement",
                        "src": "4143:72:28"
                      }
                    ]
                  },
                  "id": 6077,
                  "nodeType": "IfStatement",
                  "src": "3870:356:28",
                  "trueBody": {
                    "id": 6061,
                    "nodeType": "Block",
                    "src": "3900:137:28",
                    "statements": [
                      {
                        "expression": {
                          "id": 6054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6051,
                            "name": "feeGrowthBelow0X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6043,
                            "src": "3914:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 6052,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "3936:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                "typeString": "struct Tick.Info storage pointer"
                              }
                            },
                            "id": 6053,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeGrowthOutside0X128",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5946,
                            "src": "3936:27:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3914:49:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6055,
                        "nodeType": "ExpressionStatement",
                        "src": "3914:49:28"
                      },
                      {
                        "expression": {
                          "id": 6059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6056,
                            "name": "feeGrowthBelow1X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6046,
                            "src": "3977:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 6057,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "3999:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                "typeString": "struct Tick.Info storage pointer"
                              }
                            },
                            "id": 6058,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeGrowthOutside1X128",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5948,
                            "src": "3999:27:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3977:49:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6060,
                        "nodeType": "ExpressionStatement",
                        "src": "3977:49:28"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    6079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6079,
                      "mutability": "mutable",
                      "name": "feeGrowthAbove0X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 6130,
                      "src": "4274:27:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6078,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4274:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6080,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4274:27:28"
                },
                {
                  "assignments": [
                    6082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6082,
                      "mutability": "mutable",
                      "name": "feeGrowthAbove1X128",
                      "nodeType": "VariableDeclaration",
                      "scope": 6130,
                      "src": "4311:27:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4311:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6083,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4311:27:28"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    },
                    "id": 6086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6084,
                      "name": "tickCurrent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6019,
                      "src": "4352:11:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 6085,
                      "name": "tickUpper",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6017,
                      "src": "4366:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "src": "4352:23:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 6112,
                    "nodeType": "Block",
                    "src": "4520:183:28",
                    "statements": [
                      {
                        "expression": {
                          "id": 6103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6098,
                            "name": "feeGrowthAbove0X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6079,
                            "src": "4534:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6099,
                              "name": "feeGrowthGlobal0X128",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6021,
                              "src": "4556:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 6100,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6037,
                                "src": "4579:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 6101,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "feeGrowthOutside0X128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5946,
                              "src": "4579:27:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4556:50:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4534:72:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6104,
                        "nodeType": "ExpressionStatement",
                        "src": "4534:72:28"
                      },
                      {
                        "expression": {
                          "id": 6110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6105,
                            "name": "feeGrowthAbove1X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6082,
                            "src": "4620:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6106,
                              "name": "feeGrowthGlobal1X128",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6023,
                              "src": "4642:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 6107,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6037,
                                "src": "4665:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                  "typeString": "struct Tick.Info storage pointer"
                                }
                              },
                              "id": 6108,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "feeGrowthOutside1X128",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5948,
                              "src": "4665:27:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4642:50:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4620:72:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6111,
                        "nodeType": "ExpressionStatement",
                        "src": "4620:72:28"
                      }
                    ]
                  },
                  "id": 6113,
                  "nodeType": "IfStatement",
                  "src": "4348:355:28",
                  "trueBody": {
                    "id": 6097,
                    "nodeType": "Block",
                    "src": "4377:137:28",
                    "statements": [
                      {
                        "expression": {
                          "id": 6090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6087,
                            "name": "feeGrowthAbove0X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6079,
                            "src": "4391:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 6088,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6037,
                              "src": "4413:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                "typeString": "struct Tick.Info storage pointer"
                              }
                            },
                            "id": 6089,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeGrowthOutside0X128",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5946,
                            "src": "4413:27:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4391:49:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6091,
                        "nodeType": "ExpressionStatement",
                        "src": "4391:49:28"
                      },
                      {
                        "expression": {
                          "id": 6095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6092,
                            "name": "feeGrowthAbove1X128",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6082,
                            "src": "4454:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 6093,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6037,
                              "src": "4476:5:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                "typeString": "struct Tick.Info storage pointer"
                              }
                            },
                            "id": 6094,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeGrowthOutside1X128",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5948,
                            "src": "4476:27:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4454:49:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6096,
                        "nodeType": "ExpressionStatement",
                        "src": "4454:49:28"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 6120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6114,
                      "name": "feeGrowthInside0X128",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6026,
                      "src": "4713:20:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 6115,
                          "name": "feeGrowthGlobal0X128",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6021,
                          "src": "4736:20:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "id": 6116,
                          "name": "feeGrowthBelow0X128",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6043,
                          "src": "4759:19:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4736:42:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "id": 6118,
                        "name": "feeGrowthAbove0X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6079,
                        "src": "4781:19:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4736:64:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4713:87:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6121,
                  "nodeType": "ExpressionStatement",
                  "src": "4713:87:28"
                },
                {
                  "expression": {
                    "id": 6128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6122,
                      "name": "feeGrowthInside1X128",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6028,
                      "src": "4810:20:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 6123,
                          "name": "feeGrowthGlobal1X128",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6023,
                          "src": "4833:20:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "id": 6124,
                          "name": "feeGrowthBelow1X128",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6046,
                          "src": "4856:19:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4833:42:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "id": 6126,
                        "name": "feeGrowthAbove1X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6082,
                        "src": "4878:19:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4833:64:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4810:87:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6129,
                  "nodeType": "ExpressionStatement",
                  "src": "4810:87:28"
                }
              ]
            },
            "documentation": {
              "id": 6009,
              "nodeType": "StructuredDocumentation",
              "src": "2565:765:28",
              "text": "@notice Retrieves fee growth data\n @param self The mapping containing all tick information for initialized ticks\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @param tickCurrent The current tick\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries"
            },
            "id": 6131,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFeeGrowthInside",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6013,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3372:40:28",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                    "typeString": "mapping(int24 => struct Tick.Info)"
                  },
                  "typeName": {
                    "id": 6012,
                    "keyType": {
                      "id": 6010,
                      "name": "int24",
                      "nodeType": "ElementaryTypeName",
                      "src": "3380:5:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "3372:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                      "typeString": "mapping(int24 => struct Tick.Info)"
                    },
                    "valueType": {
                      "id": 6011,
                      "name": "Tick.Info",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 5957,
                      "src": "3389:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6015,
                  "mutability": "mutable",
                  "name": "tickLower",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3422:15:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6014,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "3422:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6017,
                  "mutability": "mutable",
                  "name": "tickUpper",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3447:15:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6016,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "3447:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6019,
                  "mutability": "mutable",
                  "name": "tickCurrent",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3472:17:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6018,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "3472:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6021,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal0X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3499:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6020,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3499:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6023,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal1X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3537:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3537:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3362:209:28"
            },
            "returnParameters": {
              "id": 6029,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6026,
                  "mutability": "mutable",
                  "name": "feeGrowthInside0X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3595:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6025,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3595:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6028,
                  "mutability": "mutable",
                  "name": "feeGrowthInside1X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6131,
                  "src": "3625:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6027,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3625:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3594:60:28"
            },
            "scope": 6379,
            "src": "3335:1569:28",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6280,
              "nodeType": "Block",
              "src": "6511:1279:28",
              "statements": [
                {
                  "assignments": [
                    6164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6164,
                      "mutability": "mutable",
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 6280,
                      "src": "6521:22:28",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      },
                      "typeName": {
                        "id": 6163,
                        "name": "Tick.Info",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5957,
                        "src": "6521:9:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6168,
                  "initialValue": {
                    "baseExpression": {
                      "id": 6165,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6136,
                      "src": "6546:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                        "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                      }
                    },
                    "id": 6167,
                    "indexExpression": {
                      "id": 6166,
                      "name": "tick",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6138,
                      "src": "6551:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6546:10:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$5957_storage",
                      "typeString": "struct Tick.Info storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6521:35:28"
                },
                {
                  "assignments": [
                    6170
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6170,
                      "mutability": "mutable",
                      "name": "liquidityGrossBefore",
                      "nodeType": "VariableDeclaration",
                      "scope": 6280,
                      "src": "6567:28:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 6169,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "6567:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6173,
                  "initialValue": {
                    "expression": {
                      "id": 6171,
                      "name": "info",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6164,
                      "src": "6598:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info storage pointer"
                      }
                    },
                    "id": 6172,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "liquidityGross",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5942,
                    "src": "6598:19:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6567:50:28"
                },
                {
                  "assignments": [
                    6175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6175,
                      "mutability": "mutable",
                      "name": "liquidityGrossAfter",
                      "nodeType": "VariableDeclaration",
                      "scope": 6280,
                      "src": "6627:27:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 6174,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "6627:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6181,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6178,
                        "name": "liquidityGrossBefore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6170,
                        "src": "6680:20:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "id": 6179,
                        "name": "liquidityDelta",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6142,
                        "src": "6702:14:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      ],
                      "expression": {
                        "id": 6176,
                        "name": "LiquidityMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4042,
                        "src": "6657:13:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4042_$",
                          "typeString": "type(library LiquidityMath)"
                        }
                      },
                      "id": 6177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addDelta",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4041,
                      "src": "6657:22:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$",
                        "typeString": "function (uint128,int128) pure returns (uint128)"
                      }
                    },
                    "id": 6180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6657:60:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6627:90:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "id": 6185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 6183,
                          "name": "liquidityGrossAfter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6175,
                          "src": "6736:19:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "id": 6184,
                          "name": "maxLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6156,
                          "src": "6759:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "6736:35:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c4f",
                        "id": 6186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6773:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48",
                          "typeString": "literal_string \"LO\""
                        },
                        "value": "LO"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48",
                          "typeString": "literal_string \"LO\""
                        }
                      ],
                      "id": 6182,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6728:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6728:50:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6188,
                  "nodeType": "ExpressionStatement",
                  "src": "6728:50:28"
                },
                {
                  "expression": {
                    "id": 6199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6189,
                      "name": "flipped",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6159,
                      "src": "6789:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 6198,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 6192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6190,
                              "name": "liquidityGrossAfter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6175,
                              "src": "6800:19:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 6191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6823:1:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6800:24:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 6193,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6799:26:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 6196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6194,
                              "name": "liquidityGrossBefore",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6170,
                              "src": "6830:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 6195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6854:1:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6830:25:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 6197,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6829:27:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "6799:57:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6789:67:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6200,
                  "nodeType": "ExpressionStatement",
                  "src": "6789:67:28"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    },
                    "id": 6203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6201,
                      "name": "liquidityGrossBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6170,
                      "src": "6871:20:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 6202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6895:1:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6871:25:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6246,
                  "nodeType": "IfStatement",
                  "src": "6867:572:28",
                  "trueBody": {
                    "id": 6245,
                    "nodeType": "Block",
                    "src": "6898:541:28",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 6206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6204,
                            "name": "tick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6138,
                            "src": "7028:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 6205,
                            "name": "tickCurrent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6140,
                            "src": "7036:11:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "7028:19:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6238,
                        "nodeType": "IfStatement",
                        "src": "7024:368:28",
                        "trueBody": {
                          "id": 6237,
                          "nodeType": "Block",
                          "src": "7049:343:28",
                          "statements": [
                            {
                              "expression": {
                                "id": 6211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 6207,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "7067:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                      "typeString": "struct Tick.Info storage pointer"
                                    }
                                  },
                                  "id": 6209,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeGrowthOutside0X128",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5946,
                                  "src": "7067:26:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6210,
                                  "name": "feeGrowthGlobal0X128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6144,
                                  "src": "7096:20:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7067:49:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6212,
                              "nodeType": "ExpressionStatement",
                              "src": "7067:49:28"
                            },
                            {
                              "expression": {
                                "id": 6217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 6213,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "7134:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                      "typeString": "struct Tick.Info storage pointer"
                                    }
                                  },
                                  "id": 6215,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeGrowthOutside1X128",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5948,
                                  "src": "7134:26:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6216,
                                  "name": "feeGrowthGlobal1X128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6146,
                                  "src": "7163:20:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7134:49:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6218,
                              "nodeType": "ExpressionStatement",
                              "src": "7134:49:28"
                            },
                            {
                              "expression": {
                                "id": 6223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 6219,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "7201:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                      "typeString": "struct Tick.Info storage pointer"
                                    }
                                  },
                                  "id": 6221,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "secondsPerLiquidityOutsideX128",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5952,
                                  "src": "7201:35:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6222,
                                  "name": "secondsPerLiquidityCumulativeX128",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6148,
                                  "src": "7239:33:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "7201:71:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "id": 6224,
                              "nodeType": "ExpressionStatement",
                              "src": "7201:71:28"
                            },
                            {
                              "expression": {
                                "id": 6229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 6225,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "7290:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                      "typeString": "struct Tick.Info storage pointer"
                                    }
                                  },
                                  "id": 6227,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "tickCumulativeOutside",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5950,
                                  "src": "7290:26:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6228,
                                  "name": "tickCumulative",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6150,
                                  "src": "7319:14:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int56",
                                    "typeString": "int56"
                                  }
                                },
                                "src": "7290:43:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int56",
                                  "typeString": "int56"
                                }
                              },
                              "id": 6230,
                              "nodeType": "ExpressionStatement",
                              "src": "7290:43:28"
                            },
                            {
                              "expression": {
                                "id": 6235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 6231,
                                    "name": "info",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "7351:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                      "typeString": "struct Tick.Info storage pointer"
                                    }
                                  },
                                  "id": 6233,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "secondsOutside",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5954,
                                  "src": "7351:19:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6234,
                                  "name": "time",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6152,
                                  "src": "7373:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "7351:26:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 6236,
                              "nodeType": "ExpressionStatement",
                              "src": "7351:26:28"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 6243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 6239,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6164,
                              "src": "7405:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                "typeString": "struct Tick.Info storage pointer"
                              }
                            },
                            "id": 6241,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "initialized",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5956,
                            "src": "7405:16:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 6242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7424:4:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "7405:23:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6244,
                        "nodeType": "ExpressionStatement",
                        "src": "7405:23:28"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 6251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6247,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6164,
                        "src": "7449:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6249,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "liquidityGross",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5942,
                      "src": "7449:19:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6250,
                      "name": "liquidityGrossAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6175,
                      "src": "7471:19:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "7449:41:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 6252,
                  "nodeType": "ExpressionStatement",
                  "src": "7449:41:28"
                },
                {
                  "expression": {
                    "id": 6278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6253,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6164,
                        "src": "7616:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6255,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "liquidityNet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5944,
                      "src": "7616:17:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "id": 6256,
                        "name": "upper",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6154,
                        "src": "7636:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "id": 6273,
                                "name": "liquidityDelta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6142,
                                "src": "7757:14:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6269,
                                      "name": "info",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6164,
                                      "src": "7734:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                        "typeString": "struct Tick.Info storage pointer"
                                      }
                                    },
                                    "id": 6270,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidityNet",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5944,
                                    "src": "7734:17:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  ],
                                  "id": 6268,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7727:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 6267,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7727:6:28",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7727:25:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 6272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4144,
                              "src": "7727:29:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 6274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7727:45:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 6275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toInt128",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5125,
                          "src": "7727:54:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$",
                            "typeString": "function (int256) pure returns (int128)"
                          }
                        },
                        "id": 6276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7727:56:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "id": 6277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "7636:147:28",
                      "trueExpression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "id": 6263,
                                "name": "liquidityDelta",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6142,
                                "src": "7686:14:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6259,
                                      "name": "info",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6164,
                                      "src": "7663:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                                        "typeString": "struct Tick.Info storage pointer"
                                      }
                                    },
                                    "id": 6260,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidityNet",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5944,
                                    "src": "7663:17:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  ],
                                  "id": 6258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7656:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 6257,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7656:6:28",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7656:25:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 6262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4171,
                              "src": "7656:29:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 6264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7656:45:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 6265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toInt128",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5125,
                          "src": "7656:54:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$",
                            "typeString": "function (int256) pure returns (int128)"
                          }
                        },
                        "id": 6266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7656:56:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "src": "7616:167:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "id": 6279,
                  "nodeType": "ExpressionStatement",
                  "src": "7616:167:28"
                }
              ]
            },
            "documentation": {
              "id": 6132,
              "nodeType": "StructuredDocumentation",
              "src": "4910:1186:28",
              "text": "@notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\n @param self The mapping containing all tick information for initialized ticks\n @param tick The tick that will be updated\n @param tickCurrent The current tick\n @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n @param tickCumulative The tick * time elapsed since the pool was first initialized\n @param time The current block timestamp cast to a uint32\n @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n @param maxLiquidity The maximum liquidity allocation for a single tick\n @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa"
            },
            "id": 6281,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "update",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6136,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6126:40:28",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                    "typeString": "mapping(int24 => struct Tick.Info)"
                  },
                  "typeName": {
                    "id": 6135,
                    "keyType": {
                      "id": 6133,
                      "name": "int24",
                      "nodeType": "ElementaryTypeName",
                      "src": "6134:5:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "6126:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                      "typeString": "mapping(int24 => struct Tick.Info)"
                    },
                    "valueType": {
                      "id": 6134,
                      "name": "Tick.Info",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 5957,
                      "src": "6143:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6138,
                  "mutability": "mutable",
                  "name": "tick",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6176:10:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6137,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "6176:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6140,
                  "mutability": "mutable",
                  "name": "tickCurrent",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6196:17:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6139,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "6196:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6142,
                  "mutability": "mutable",
                  "name": "liquidityDelta",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6223:21:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 6141,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6223:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6144,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal0X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6254:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6143,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6254:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6146,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal1X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6292:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6145,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6292:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6148,
                  "mutability": "mutable",
                  "name": "secondsPerLiquidityCumulativeX128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6330:41:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 6147,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "6330:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6150,
                  "mutability": "mutable",
                  "name": "tickCumulative",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6381:20:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int56",
                    "typeString": "int56"
                  },
                  "typeName": {
                    "id": 6149,
                    "name": "int56",
                    "nodeType": "ElementaryTypeName",
                    "src": "6381:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int56",
                      "typeString": "int56"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6152,
                  "mutability": "mutable",
                  "name": "time",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6411:11:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6151,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6411:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6154,
                  "mutability": "mutable",
                  "name": "upper",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6432:10:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6153,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6432:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6156,
                  "mutability": "mutable",
                  "name": "maxLiquidity",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6452:20:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 6155,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6452:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6116:362:28"
            },
            "returnParameters": {
              "id": 6160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6159,
                  "mutability": "mutable",
                  "name": "flipped",
                  "nodeType": "VariableDeclaration",
                  "scope": 6281,
                  "src": "6497:12:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6158,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6497:4:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6496:14:28"
            },
            "scope": 6379,
            "src": "6101:1689:28",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6296,
              "nodeType": "Block",
              "src": "8055:34:28",
              "statements": [
                {
                  "expression": {
                    "id": 6294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8065:17:28",
                    "subExpression": {
                      "baseExpression": {
                        "id": 6291,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6286,
                        "src": "8072:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                          "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                        }
                      },
                      "id": 6293,
                      "indexExpression": {
                        "id": 6292,
                        "name": "tick",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6288,
                        "src": "8077:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8072:10:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage",
                        "typeString": "struct Tick.Info storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6295,
                  "nodeType": "ExpressionStatement",
                  "src": "8065:17:28"
                }
              ]
            },
            "documentation": {
              "id": 6282,
              "nodeType": "StructuredDocumentation",
              "src": "7796:176:28",
              "text": "@notice Clears tick data\n @param self The mapping containing all initialized tick information for initialized ticks\n @param tick The tick that will be cleared"
            },
            "id": 6297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "clear",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6286,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 6297,
                  "src": "7992:40:28",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                    "typeString": "mapping(int24 => struct Tick.Info)"
                  },
                  "typeName": {
                    "id": 6285,
                    "keyType": {
                      "id": 6283,
                      "name": "int24",
                      "nodeType": "ElementaryTypeName",
                      "src": "8000:5:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "7992:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                      "typeString": "mapping(int24 => struct Tick.Info)"
                    },
                    "valueType": {
                      "id": 6284,
                      "name": "Tick.Info",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 5957,
                      "src": "8009:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6288,
                  "mutability": "mutable",
                  "name": "tick",
                  "nodeType": "VariableDeclaration",
                  "scope": 6297,
                  "src": "8034:10:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6287,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "8034:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7991:54:28"
            },
            "returnParameters": {
              "id": 6290,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8055:0:28"
            },
            "scope": 6379,
            "src": "7977:112:28",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6377,
              "nodeType": "Block",
              "src": "9169:529:28",
              "statements": [
                {
                  "assignments": [
                    6322
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6322,
                      "mutability": "mutable",
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 6377,
                      "src": "9179:22:28",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      },
                      "typeName": {
                        "id": 6321,
                        "name": "Tick.Info",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5957,
                        "src": "9179:9:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6326,
                  "initialValue": {
                    "baseExpression": {
                      "id": 6323,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6302,
                      "src": "9204:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                        "typeString": "mapping(int24 => struct Tick.Info storage ref)"
                      }
                    },
                    "id": 6325,
                    "indexExpression": {
                      "id": 6324,
                      "name": "tick",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6304,
                      "src": "9209:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9204:10:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$5957_storage",
                      "typeString": "struct Tick.Info storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9179:35:28"
                },
                {
                  "expression": {
                    "id": 6334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6327,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6322,
                        "src": "9224:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6329,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeGrowthOutside0X128",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5946,
                      "src": "9224:26:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 6330,
                        "name": "feeGrowthGlobal0X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6306,
                        "src": "9253:20:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 6331,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6322,
                          "src": "9276:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info storage pointer"
                          }
                        },
                        "id": 6332,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "feeGrowthOutside0X128",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5946,
                        "src": "9276:26:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "9253:49:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9224:78:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6335,
                  "nodeType": "ExpressionStatement",
                  "src": "9224:78:28"
                },
                {
                  "expression": {
                    "id": 6343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6336,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6322,
                        "src": "9312:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6338,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeGrowthOutside1X128",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5948,
                      "src": "9312:26:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6342,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 6339,
                        "name": "feeGrowthGlobal1X128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6308,
                        "src": "9341:20:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 6340,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6322,
                          "src": "9364:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info storage pointer"
                          }
                        },
                        "id": 6341,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "feeGrowthOutside1X128",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5948,
                        "src": "9364:26:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "9341:49:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9312:78:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 6344,
                  "nodeType": "ExpressionStatement",
                  "src": "9312:78:28"
                },
                {
                  "expression": {
                    "id": 6352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6345,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6322,
                        "src": "9400:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6347,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "secondsPerLiquidityOutsideX128",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5952,
                      "src": "9400:35:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "id": 6351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 6348,
                        "name": "secondsPerLiquidityCumulativeX128",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6310,
                        "src": "9438:33:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 6349,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6322,
                          "src": "9474:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info storage pointer"
                          }
                        },
                        "id": 6350,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "secondsPerLiquidityOutsideX128",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5952,
                        "src": "9474:35:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "src": "9438:71:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "9400:109:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "id": 6353,
                  "nodeType": "ExpressionStatement",
                  "src": "9400:109:28"
                },
                {
                  "expression": {
                    "id": 6361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6354,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6322,
                        "src": "9519:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6356,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "tickCumulativeOutside",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5950,
                      "src": "9519:26:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int56",
                        "typeString": "int56"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_int56",
                        "typeString": "int56"
                      },
                      "id": 6360,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 6357,
                        "name": "tickCumulative",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6312,
                        "src": "9548:14:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 6358,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6322,
                          "src": "9565:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info storage pointer"
                          }
                        },
                        "id": 6359,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tickCumulativeOutside",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5950,
                        "src": "9565:26:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        }
                      },
                      "src": "9548:43:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int56",
                        "typeString": "int56"
                      }
                    },
                    "src": "9519:72:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int56",
                      "typeString": "int56"
                    }
                  },
                  "id": 6362,
                  "nodeType": "ExpressionStatement",
                  "src": "9519:72:28"
                },
                {
                  "expression": {
                    "id": 6370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6363,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6322,
                        "src": "9601:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6365,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "secondsOutside",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5954,
                      "src": "9601:19:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "id": 6369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 6366,
                        "name": "time",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6314,
                        "src": "9623:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 6367,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6322,
                          "src": "9630:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                            "typeString": "struct Tick.Info storage pointer"
                          }
                        },
                        "id": 6368,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "secondsOutside",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5954,
                        "src": "9630:19:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "9623:26:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "src": "9601:48:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "id": 6371,
                  "nodeType": "ExpressionStatement",
                  "src": "9601:48:28"
                },
                {
                  "expression": {
                    "id": 6375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6372,
                      "name": "liquidityNet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6317,
                      "src": "9659:12:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 6373,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6322,
                        "src": "9674:4:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                          "typeString": "struct Tick.Info storage pointer"
                        }
                      },
                      "id": 6374,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "liquidityNet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5944,
                      "src": "9674:17:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    },
                    "src": "9659:32:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "id": 6376,
                  "nodeType": "ExpressionStatement",
                  "src": "9659:32:28"
                }
              ]
            },
            "documentation": {
              "id": 6298,
              "nodeType": "StructuredDocumentation",
              "src": "8095:761:28",
              "text": "@notice Transitions to next tick as needed by price movement\n @param self The mapping containing all tick information for initialized ticks\n @param tick The destination tick of the transition\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n @param tickCumulative The tick * time elapsed since the pool was first initialized\n @param time The current block.timestamp\n @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)"
            },
            "id": 6378,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cross",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6302,
                  "mutability": "mutable",
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "8885:40:28",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                    "typeString": "mapping(int24 => struct Tick.Info)"
                  },
                  "typeName": {
                    "id": 6301,
                    "keyType": {
                      "id": 6299,
                      "name": "int24",
                      "nodeType": "ElementaryTypeName",
                      "src": "8893:5:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "8885:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$5957_storage_$",
                      "typeString": "mapping(int24 => struct Tick.Info)"
                    },
                    "valueType": {
                      "id": 6300,
                      "name": "Tick.Info",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 5957,
                      "src": "8902:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Info_$5957_storage_ptr",
                        "typeString": "struct Tick.Info"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6304,
                  "mutability": "mutable",
                  "name": "tick",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "8935:10:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 6303,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "8935:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6306,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal0X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "8955:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6305,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8955:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6308,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal1X128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "8993:28:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6307,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8993:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6310,
                  "mutability": "mutable",
                  "name": "secondsPerLiquidityCumulativeX128",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "9031:41:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 6309,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "9031:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6312,
                  "mutability": "mutable",
                  "name": "tickCumulative",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "9082:20:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int56",
                    "typeString": "int56"
                  },
                  "typeName": {
                    "id": 6311,
                    "name": "int56",
                    "nodeType": "ElementaryTypeName",
                    "src": "9082:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int56",
                      "typeString": "int56"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6314,
                  "mutability": "mutable",
                  "name": "time",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "9112:11:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6313,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9112:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8875:254:28"
            },
            "returnParameters": {
              "id": 6318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6317,
                  "mutability": "mutable",
                  "name": "liquidityNet",
                  "nodeType": "VariableDeclaration",
                  "scope": 6378,
                  "src": "9148:19:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 6316,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "9148:6:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9147:21:28"
            },
            "scope": 6379,
            "src": "8861:837:28",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 6380,
        "src": "277:9423:28"
      }
    ],
    "src": "37:9664:28"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/Tick.sol",
      "exportedSymbols": {
        "LiquidityMath": [
          4042
        ],
        "LowGasSafeMath": [
          4172
        ],
        "SafeCast": [
          5150
        ],
        "Tick": [
          6379
        ],
        "TickMath": [
          7170
        ]
      },
      "license": "BUSL-1.1"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            ">=",
            "0.5",
            ".0"
          ]
        },
        "id": 5929,
        "name": "PragmaDirective",
        "src": "37:24:28"
      },
      {
        "attributes": {
          "SourceUnit": 4173,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LowGasSafeMath.sol",
          "file": "./LowGasSafeMath.sol",
          "scope": 6380,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5930,
        "name": "ImportDirective",
        "src": "63:30:28"
      },
      {
        "attributes": {
          "SourceUnit": 5151,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/SafeCast.sol",
          "file": "./SafeCast.sol",
          "scope": 6380,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5931,
        "name": "ImportDirective",
        "src": "94:24:28"
      },
      {
        "attributes": {
          "SourceUnit": 7171,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/TickMath.sol",
          "file": "./TickMath.sol",
          "scope": 6380,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5932,
        "name": "ImportDirective",
        "src": "120:24:28"
      },
      {
        "attributes": {
          "SourceUnit": 4043,
          "absolutePath": "/Users/warrenmason/Documents/UniswapV3Contracts/Core/LiveContracts/MoonwalkerSwap-v1-Core/contracts/libraries/LiquidityMath.sol",
          "file": "./LiquidityMath.sol",
          "scope": 6380,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5933,
        "name": "ImportDirective",
        "src": "145:29:28"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6379
          ],
          "name": "Tick",
          "scope": 6380
        },
        "children": [
          {
            "attributes": {
              "text": "@title Tick\n @notice Contains functions for managing tick processes and relevant calculations"
            },
            "id": 5934,
            "name": "StructuredDocumentation",
            "src": "176:101:28"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "LowGasSafeMath",
                  "referencedDeclaration": 4172,
                  "type": "library LowGasSafeMath"
                },
                "id": 5935,
                "name": "UserDefinedTypeName",
                "src": "302:14:28"
              },
              {
                "attributes": {
                  "name": "int256",
                  "type": "int256"
                },
                "id": 5936,
                "name": "ElementaryTypeName",
                "src": "321:6:28"
              }
            ],
            "id": 5937,
            "name": "UsingForDirective",
            "src": "296:32:28"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeCast",
                  "referencedDeclaration": 5150,
                  "type": "library SafeCast"
                },
                "id": 5938,
                "name": "UserDefinedTypeName",
                "src": "339:8:28"
              },
              {
                "attributes": {
                  "name": "int256",
                  "type": "int256"
                },
                "id": 5939,
                "name": "ElementaryTypeName",
                "src": "352:6:28"
              }
            ],
            "id": 5940,
            "name": "UsingForDirective",
            "src": "333:26:28"
          },
          {
            "attributes": {
              "canonicalName": "Tick.Info",
              "name": "Info",
              "scope": 6379,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "liquidityGross",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 5941,
                    "name": "ElementaryTypeName",
                    "src": "509:7:28"
                  }
                ],
                "id": 5942,
                "name": "VariableDeclaration",
                "src": "509:22:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "liquidityNet",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int128",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int128",
                      "type": "int128"
                    },
                    "id": 5943,
                    "name": "ElementaryTypeName",
                    "src": "652:6:28"
                  }
                ],
                "id": 5944,
                "name": "VariableDeclaration",
                "src": "652:19:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "feeGrowthOutside0X128",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 5945,
                    "name": "ElementaryTypeName",
                    "src": "894:7:28"
                  }
                ],
                "id": 5946,
                "name": "VariableDeclaration",
                "src": "894:29:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "feeGrowthOutside1X128",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 5947,
                    "name": "ElementaryTypeName",
                    "src": "933:7:28"
                  }
                ],
                "id": 5948,
                "name": "VariableDeclaration",
                "src": "933:29:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tickCumulativeOutside",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "int56",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "int56",
                      "type": "int56"
                    },
                    "id": 5949,
                    "name": "ElementaryTypeName",
                    "src": "1039:5:28"
                  }
                ],
                "id": 5950,
                "name": "VariableDeclaration",
                "src": "1039:27:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "secondsPerLiquidityOutsideX128",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 5951,
                    "name": "ElementaryTypeName",
                    "src": "1290:7:28"
                  }
                ],
                "id": 5952,
                "name": "VariableDeclaration",
                "src": "1290:38:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "secondsOutside",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint32",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint32",
                      "type": "uint32"
                    },
                    "id": 5953,
                    "name": "ElementaryTypeName",
                    "src": "1533:6:28"
                  }
                ],
                "id": 5954,
                "name": "VariableDeclaration",
                "src": "1533:21:28"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "initialized",
                  "scope": 5957,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 5955,
                    "name": "ElementaryTypeName",
                    "src": "1779:4:28"
                  }
                ],
                "id": 5956,
                "name": "VariableDeclaration",
                "src": "1779:16:28"
              }
            ],
            "id": 5957,
            "name": "StructDefinition",
            "src": "421:1381:28"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "tickSpacingToMaxLiquidityPerTick",
              "scope": 6379,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Derives max liquidity per tick from given tick spacing\n @dev Executed within the pool constructor\n @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\n     e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\n @return The max liquidity per tick"
                },
                "id": 5958,
                "name": "StructuredDocumentation",
                "src": "1808:382:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickSpacing",
                      "scope": 6008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 5959,
                        "name": "ElementaryTypeName",
                        "src": "2237:5:28"
                      }
                    ],
                    "id": 5960,
                    "name": "VariableDeclaration",
                    "src": "2237:17:28"
                  }
                ],
                "id": 5961,
                "name": "ParameterList",
                "src": "2236:19:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 6008,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 5962,
                        "name": "ElementaryTypeName",
                        "src": "2279:7:28"
                      }
                    ],
                    "id": 5963,
                    "name": "VariableDeclaration",
                    "src": "2279:7:28"
                  }
                ],
                "id": 5964,
                "name": "ParameterList",
                "src": "2278:9:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5966
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "minTick",
                          "scope": 6007,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int24",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 5965,
                            "name": "ElementaryTypeName",
                            "src": "2298:5:28"
                          }
                        ],
                        "id": 5966,
                        "name": "VariableDeclaration",
                        "src": "2298:13:28"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "int24"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "MIN_TICK",
                                      "referencedDeclaration": 6643,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7170,
                                          "type": "type(library TickMath)",
                                          "value": "TickMath"
                                        },
                                        "id": 5967,
                                        "name": "Identifier",
                                        "src": "2315:8:28"
                                      }
                                    ],
                                    "id": 5968,
                                    "name": "MemberAccess",
                                    "src": "2315:17:28"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5960,
                                      "type": "int24",
                                      "value": "tickSpacing"
                                    },
                                    "id": 5969,
                                    "name": "Identifier",
                                    "src": "2335:11:28"
                                  }
                                ],
                                "id": 5970,
                                "name": "BinaryOperation",
                                "src": "2315:31:28"
                              }
                            ],
                            "id": 5971,
                            "name": "TupleExpression",
                            "src": "2314:33:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5960,
                              "type": "int24",
                              "value": "tickSpacing"
                            },
                            "id": 5972,
                            "name": "Identifier",
                            "src": "2350:11:28"
                          }
                        ],
                        "id": 5973,
                        "name": "BinaryOperation",
                        "src": "2314:47:28"
                      }
                    ],
                    "id": 5974,
                    "name": "VariableDeclarationStatement",
                    "src": "2298:63:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5976
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "maxTick",
                          "scope": 6007,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int24",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 5975,
                            "name": "ElementaryTypeName",
                            "src": "2371:5:28"
                          }
                        ],
                        "id": 5976,
                        "name": "VariableDeclaration",
                        "src": "2371:13:28"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "*",
                          "type": "int24"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "int24"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "MAX_TICK",
                                      "referencedDeclaration": 6648,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7170,
                                          "type": "type(library TickMath)",
                                          "value": "TickMath"
                                        },
                                        "id": 5977,
                                        "name": "Identifier",
                                        "src": "2388:8:28"
                                      }
                                    ],
                                    "id": 5978,
                                    "name": "MemberAccess",
                                    "src": "2388:17:28"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5960,
                                      "type": "int24",
                                      "value": "tickSpacing"
                                    },
                                    "id": 5979,
                                    "name": "Identifier",
                                    "src": "2408:11:28"
                                  }
                                ],
                                "id": 5980,
                                "name": "BinaryOperation",
                                "src": "2388:31:28"
                              }
                            ],
                            "id": 5981,
                            "name": "TupleExpression",
                            "src": "2387:33:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5960,
                              "type": "int24",
                              "value": "tickSpacing"
                            },
                            "id": 5982,
                            "name": "Identifier",
                            "src": "2423:11:28"
                          }
                        ],
                        "id": 5983,
                        "name": "BinaryOperation",
                        "src": "2387:47:28"
                      }
                    ],
                    "id": 5984,
                    "name": "VariableDeclarationStatement",
                    "src": "2371:63:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        5986
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "numTicks",
                          "scope": 6007,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint24",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint24",
                              "type": "uint24"
                            },
                            "id": 5985,
                            "name": "ElementaryTypeName",
                            "src": "2444:6:28"
                          }
                        ],
                        "id": 5986,
                        "name": "VariableDeclaration",
                        "src": "2444:15:28"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+",
                          "type": "uint24"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint24",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint24)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint24"
                                    },
                                    "id": 5987,
                                    "name": "ElementaryTypeName",
                                    "src": "2462:6:28"
                                  }
                                ],
                                "id": 5988,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2462:6:28"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "/",
                                  "type": "int24"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "int24"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "commonType": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "-",
                                          "type": "int24"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5976,
                                              "type": "int24",
                                              "value": "maxTick"
                                            },
                                            "id": 5989,
                                            "name": "Identifier",
                                            "src": "2470:7:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 5966,
                                              "type": "int24",
                                              "value": "minTick"
                                            },
                                            "id": 5990,
                                            "name": "Identifier",
                                            "src": "2480:7:28"
                                          }
                                        ],
                                        "id": 5991,
                                        "name": "BinaryOperation",
                                        "src": "2470:17:28"
                                      }
                                    ],
                                    "id": 5992,
                                    "name": "TupleExpression",
                                    "src": "2469:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5960,
                                      "type": "int24",
                                      "value": "tickSpacing"
                                    },
                                    "id": 5993,
                                    "name": "Identifier",
                                    "src": "2491:11:28"
                                  }
                                ],
                                "id": 5994,
                                "name": "BinaryOperation",
                                "src": "2469:33:28"
                              }
                            ],
                            "id": 5995,
                            "name": "FunctionCall",
                            "src": "2462:41:28"
                          },
                          {
                            "attributes": {
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 5996,
                            "name": "Literal",
                            "src": "2506:1:28"
                          }
                        ],
                        "id": 5997,
                        "name": "BinaryOperation",
                        "src": "2462:45:28"
                      }
                    ],
                    "id": 5998,
                    "name": "VariableDeclarationStatement",
                    "src": "2444:63:28"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 5964
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "/",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "max",
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "type(uint128)",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967269,
                                      "type": "function () pure",
                                      "value": "type"
                                    },
                                    "id": 5999,
                                    "name": "Identifier",
                                    "src": "2524:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint128"
                                        },
                                        "id": 6000,
                                        "name": "ElementaryTypeName",
                                        "src": "2529:7:28"
                                      }
                                    ],
                                    "id": 6001,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2529:7:28"
                                  }
                                ],
                                "id": 6002,
                                "name": "FunctionCall",
                                "src": "2524:13:28"
                              }
                            ],
                            "id": 6003,
                            "name": "MemberAccess",
                            "src": "2524:17:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5986,
                              "type": "uint24",
                              "value": "numTicks"
                            },
                            "id": 6004,
                            "name": "Identifier",
                            "src": "2544:8:28"
                          }
                        ],
                        "id": 6005,
                        "name": "BinaryOperation",
                        "src": "2524:28:28"
                      }
                    ],
                    "id": 6006,
                    "name": "Return",
                    "src": "2517:35:28"
                  }
                ],
                "id": 6007,
                "name": "Block",
                "src": "2288:271:28"
              }
            ],
            "id": 6008,
            "name": "FunctionDefinition",
            "src": "2195:364:28"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getFeeGrowthInside",
              "scope": 6379,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Retrieves fee growth data\n @param self The mapping containing all tick information for initialized ticks\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @param tickCurrent The current tick\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries"
                },
                "id": 6009,
                "name": "StructuredDocumentation",
                "src": "2565:765:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "mapping(int24 => struct Tick.Info)",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "mapping(int24 => struct Tick.Info)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 6010,
                            "name": "ElementaryTypeName",
                            "src": "3380:5:28"
                          },
                          {
                            "attributes": {
                              "name": "Tick.Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6011,
                            "name": "UserDefinedTypeName",
                            "src": "3389:9:28"
                          }
                        ],
                        "id": 6012,
                        "name": "Mapping",
                        "src": "3372:27:28"
                      }
                    ],
                    "id": 6013,
                    "name": "VariableDeclaration",
                    "src": "3372:40:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickLower",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6014,
                        "name": "ElementaryTypeName",
                        "src": "3422:5:28"
                      }
                    ],
                    "id": 6015,
                    "name": "VariableDeclaration",
                    "src": "3422:15:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickUpper",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6016,
                        "name": "ElementaryTypeName",
                        "src": "3447:5:28"
                      }
                    ],
                    "id": 6017,
                    "name": "VariableDeclaration",
                    "src": "3447:15:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickCurrent",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6018,
                        "name": "ElementaryTypeName",
                        "src": "3472:5:28"
                      }
                    ],
                    "id": 6019,
                    "name": "VariableDeclaration",
                    "src": "3472:17:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobal0X128",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6020,
                        "name": "ElementaryTypeName",
                        "src": "3499:7:28"
                      }
                    ],
                    "id": 6021,
                    "name": "VariableDeclaration",
                    "src": "3499:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobal1X128",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6022,
                        "name": "ElementaryTypeName",
                        "src": "3537:7:28"
                      }
                    ],
                    "id": 6023,
                    "name": "VariableDeclaration",
                    "src": "3537:28:28"
                  }
                ],
                "id": 6024,
                "name": "ParameterList",
                "src": "3362:209:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthInside0X128",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6025,
                        "name": "ElementaryTypeName",
                        "src": "3595:7:28"
                      }
                    ],
                    "id": 6026,
                    "name": "VariableDeclaration",
                    "src": "3595:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthInside1X128",
                      "scope": 6131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6027,
                        "name": "ElementaryTypeName",
                        "src": "3625:7:28"
                      }
                    ],
                    "id": 6028,
                    "name": "VariableDeclaration",
                    "src": "3625:28:28"
                  }
                ],
                "id": 6029,
                "name": "ParameterList",
                "src": "3594:60:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6031
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "lower",
                          "scope": 6130,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Tick.Info",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6030,
                            "name": "UserDefinedTypeName",
                            "src": "3665:4:28"
                          }
                        ],
                        "id": 6031,
                        "name": "VariableDeclaration",
                        "src": "3665:18:28"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Tick.Info storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6013,
                              "type": "mapping(int24 => struct Tick.Info storage ref)",
                              "value": "self"
                            },
                            "id": 6032,
                            "name": "Identifier",
                            "src": "3686:4:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6015,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 6033,
                            "name": "Identifier",
                            "src": "3691:9:28"
                          }
                        ],
                        "id": 6034,
                        "name": "IndexAccess",
                        "src": "3686:15:28"
                      }
                    ],
                    "id": 6035,
                    "name": "VariableDeclarationStatement",
                    "src": "3665:36:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6037
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "upper",
                          "scope": 6130,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Tick.Info",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6036,
                            "name": "UserDefinedTypeName",
                            "src": "3711:4:28"
                          }
                        ],
                        "id": 6037,
                        "name": "VariableDeclaration",
                        "src": "3711:18:28"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Tick.Info storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6013,
                              "type": "mapping(int24 => struct Tick.Info storage ref)",
                              "value": "self"
                            },
                            "id": 6038,
                            "name": "Identifier",
                            "src": "3732:4:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6017,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 6039,
                            "name": "Identifier",
                            "src": "3737:9:28"
                          }
                        ],
                        "id": 6040,
                        "name": "IndexAccess",
                        "src": "3732:15:28"
                      }
                    ],
                    "id": 6041,
                    "name": "VariableDeclarationStatement",
                    "src": "3711:36:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6043
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeGrowthBelow0X128",
                          "scope": 6130,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 6042,
                            "name": "ElementaryTypeName",
                            "src": "3796:7:28"
                          }
                        ],
                        "id": 6043,
                        "name": "VariableDeclaration",
                        "src": "3796:27:28"
                      }
                    ],
                    "id": 6044,
                    "name": "VariableDeclarationStatement",
                    "src": "3796:27:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6046
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeGrowthBelow1X128",
                          "scope": 6130,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 6045,
                            "name": "ElementaryTypeName",
                            "src": "3833:7:28"
                          }
                        ],
                        "id": 6046,
                        "name": "VariableDeclaration",
                        "src": "3833:27:28"
                      }
                    ],
                    "id": 6047,
                    "name": "VariableDeclarationStatement",
                    "src": "3833:27:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6019,
                              "type": "int24",
                              "value": "tickCurrent"
                            },
                            "id": 6048,
                            "name": "Identifier",
                            "src": "3874:11:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6015,
                              "type": "int24",
                              "value": "tickLower"
                            },
                            "id": 6049,
                            "name": "Identifier",
                            "src": "3889:9:28"
                          }
                        ],
                        "id": 6050,
                        "name": "BinaryOperation",
                        "src": "3874:24:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6043,
                                      "type": "uint256",
                                      "value": "feeGrowthBelow0X128"
                                    },
                                    "id": 6051,
                                    "name": "Identifier",
                                    "src": "3914:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeGrowthOutside0X128",
                                      "referencedDeclaration": 5946,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6031,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "lower"
                                        },
                                        "id": 6052,
                                        "name": "Identifier",
                                        "src": "3936:5:28"
                                      }
                                    ],
                                    "id": 6053,
                                    "name": "MemberAccess",
                                    "src": "3936:27:28"
                                  }
                                ],
                                "id": 6054,
                                "name": "Assignment",
                                "src": "3914:49:28"
                              }
                            ],
                            "id": 6055,
                            "name": "ExpressionStatement",
                            "src": "3914:49:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6046,
                                      "type": "uint256",
                                      "value": "feeGrowthBelow1X128"
                                    },
                                    "id": 6056,
                                    "name": "Identifier",
                                    "src": "3977:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeGrowthOutside1X128",
                                      "referencedDeclaration": 5948,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6031,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "lower"
                                        },
                                        "id": 6057,
                                        "name": "Identifier",
                                        "src": "3999:5:28"
                                      }
                                    ],
                                    "id": 6058,
                                    "name": "MemberAccess",
                                    "src": "3999:27:28"
                                  }
                                ],
                                "id": 6059,
                                "name": "Assignment",
                                "src": "3977:49:28"
                              }
                            ],
                            "id": 6060,
                            "name": "ExpressionStatement",
                            "src": "3977:49:28"
                          }
                        ],
                        "id": 6061,
                        "name": "Block",
                        "src": "3900:137:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6043,
                                      "type": "uint256",
                                      "value": "feeGrowthBelow0X128"
                                    },
                                    "id": 6062,
                                    "name": "Identifier",
                                    "src": "4057:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6021,
                                          "type": "uint256",
                                          "value": "feeGrowthGlobal0X128"
                                        },
                                        "id": 6063,
                                        "name": "Identifier",
                                        "src": "4079:20:28"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "feeGrowthOutside0X128",
                                          "referencedDeclaration": 5946,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6031,
                                              "type": "struct Tick.Info storage pointer",
                                              "value": "lower"
                                            },
                                            "id": 6064,
                                            "name": "Identifier",
                                            "src": "4102:5:28"
                                          }
                                        ],
                                        "id": 6065,
                                        "name": "MemberAccess",
                                        "src": "4102:27:28"
                                      }
                                    ],
                                    "id": 6066,
                                    "name": "BinaryOperation",
                                    "src": "4079:50:28"
                                  }
                                ],
                                "id": 6067,
                                "name": "Assignment",
                                "src": "4057:72:28"
                              }
                            ],
                            "id": 6068,
                            "name": "ExpressionStatement",
                            "src": "4057:72:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6046,
                                      "type": "uint256",
                                      "value": "feeGrowthBelow1X128"
                                    },
                                    "id": 6069,
                                    "name": "Identifier",
                                    "src": "4143:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6023,
                                          "type": "uint256",
                                          "value": "feeGrowthGlobal1X128"
                                        },
                                        "id": 6070,
                                        "name": "Identifier",
                                        "src": "4165:20:28"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "feeGrowthOutside1X128",
                                          "referencedDeclaration": 5948,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6031,
                                              "type": "struct Tick.Info storage pointer",
                                              "value": "lower"
                                            },
                                            "id": 6071,
                                            "name": "Identifier",
                                            "src": "4188:5:28"
                                          }
                                        ],
                                        "id": 6072,
                                        "name": "MemberAccess",
                                        "src": "4188:27:28"
                                      }
                                    ],
                                    "id": 6073,
                                    "name": "BinaryOperation",
                                    "src": "4165:50:28"
                                  }
                                ],
                                "id": 6074,
                                "name": "Assignment",
                                "src": "4143:72:28"
                              }
                            ],
                            "id": 6075,
                            "name": "ExpressionStatement",
                            "src": "4143:72:28"
                          }
                        ],
                        "id": 6076,
                        "name": "Block",
                        "src": "4043:183:28"
                      }
                    ],
                    "id": 6077,
                    "name": "IfStatement",
                    "src": "3870:356:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6079
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeGrowthAbove0X128",
                          "scope": 6130,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 6078,
                            "name": "ElementaryTypeName",
                            "src": "4274:7:28"
                          }
                        ],
                        "id": 6079,
                        "name": "VariableDeclaration",
                        "src": "4274:27:28"
                      }
                    ],
                    "id": 6080,
                    "name": "VariableDeclarationStatement",
                    "src": "4274:27:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6082
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "feeGrowthAbove1X128",
                          "scope": 6130,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 6081,
                            "name": "ElementaryTypeName",
                            "src": "4311:7:28"
                          }
                        ],
                        "id": 6082,
                        "name": "VariableDeclaration",
                        "src": "4311:27:28"
                      }
                    ],
                    "id": 6083,
                    "name": "VariableDeclarationStatement",
                    "src": "4311:27:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6019,
                              "type": "int24",
                              "value": "tickCurrent"
                            },
                            "id": 6084,
                            "name": "Identifier",
                            "src": "4352:11:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6017,
                              "type": "int24",
                              "value": "tickUpper"
                            },
                            "id": 6085,
                            "name": "Identifier",
                            "src": "4366:9:28"
                          }
                        ],
                        "id": 6086,
                        "name": "BinaryOperation",
                        "src": "4352:23:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6079,
                                      "type": "uint256",
                                      "value": "feeGrowthAbove0X128"
                                    },
                                    "id": 6087,
                                    "name": "Identifier",
                                    "src": "4391:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeGrowthOutside0X128",
                                      "referencedDeclaration": 5946,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6037,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "upper"
                                        },
                                        "id": 6088,
                                        "name": "Identifier",
                                        "src": "4413:5:28"
                                      }
                                    ],
                                    "id": 6089,
                                    "name": "MemberAccess",
                                    "src": "4413:27:28"
                                  }
                                ],
                                "id": 6090,
                                "name": "Assignment",
                                "src": "4391:49:28"
                              }
                            ],
                            "id": 6091,
                            "name": "ExpressionStatement",
                            "src": "4391:49:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6082,
                                      "type": "uint256",
                                      "value": "feeGrowthAbove1X128"
                                    },
                                    "id": 6092,
                                    "name": "Identifier",
                                    "src": "4454:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "feeGrowthOutside1X128",
                                      "referencedDeclaration": 5948,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6037,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "upper"
                                        },
                                        "id": 6093,
                                        "name": "Identifier",
                                        "src": "4476:5:28"
                                      }
                                    ],
                                    "id": 6094,
                                    "name": "MemberAccess",
                                    "src": "4476:27:28"
                                  }
                                ],
                                "id": 6095,
                                "name": "Assignment",
                                "src": "4454:49:28"
                              }
                            ],
                            "id": 6096,
                            "name": "ExpressionStatement",
                            "src": "4454:49:28"
                          }
                        ],
                        "id": 6097,
                        "name": "Block",
                        "src": "4377:137:28"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6079,
                                      "type": "uint256",
                                      "value": "feeGrowthAbove0X128"
                                    },
                                    "id": 6098,
                                    "name": "Identifier",
                                    "src": "4534:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6021,
                                          "type": "uint256",
                                          "value": "feeGrowthGlobal0X128"
                                        },
                                        "id": 6099,
                                        "name": "Identifier",
                                        "src": "4556:20:28"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "feeGrowthOutside0X128",
                                          "referencedDeclaration": 5946,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6037,
                                              "type": "struct Tick.Info storage pointer",
                                              "value": "upper"
                                            },
                                            "id": 6100,
                                            "name": "Identifier",
                                            "src": "4579:5:28"
                                          }
                                        ],
                                        "id": 6101,
                                        "name": "MemberAccess",
                                        "src": "4579:27:28"
                                      }
                                    ],
                                    "id": 6102,
                                    "name": "BinaryOperation",
                                    "src": "4556:50:28"
                                  }
                                ],
                                "id": 6103,
                                "name": "Assignment",
                                "src": "4534:72:28"
                              }
                            ],
                            "id": 6104,
                            "name": "ExpressionStatement",
                            "src": "4534:72:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6082,
                                      "type": "uint256",
                                      "value": "feeGrowthAbove1X128"
                                    },
                                    "id": 6105,
                                    "name": "Identifier",
                                    "src": "4620:19:28"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6023,
                                          "type": "uint256",
                                          "value": "feeGrowthGlobal1X128"
                                        },
                                        "id": 6106,
                                        "name": "Identifier",
                                        "src": "4642:20:28"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "feeGrowthOutside1X128",
                                          "referencedDeclaration": 5948,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6037,
                                              "type": "struct Tick.Info storage pointer",
                                              "value": "upper"
                                            },
                                            "id": 6107,
                                            "name": "Identifier",
                                            "src": "4665:5:28"
                                          }
                                        ],
                                        "id": 6108,
                                        "name": "MemberAccess",
                                        "src": "4665:27:28"
                                      }
                                    ],
                                    "id": 6109,
                                    "name": "BinaryOperation",
                                    "src": "4642:50:28"
                                  }
                                ],
                                "id": 6110,
                                "name": "Assignment",
                                "src": "4620:72:28"
                              }
                            ],
                            "id": 6111,
                            "name": "ExpressionStatement",
                            "src": "4620:72:28"
                          }
                        ],
                        "id": 6112,
                        "name": "Block",
                        "src": "4520:183:28"
                      }
                    ],
                    "id": 6113,
                    "name": "IfStatement",
                    "src": "4348:355:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6026,
                              "type": "uint256",
                              "value": "feeGrowthInside0X128"
                            },
                            "id": 6114,
                            "name": "Identifier",
                            "src": "4713:20:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6021,
                                      "type": "uint256",
                                      "value": "feeGrowthGlobal0X128"
                                    },
                                    "id": 6115,
                                    "name": "Identifier",
                                    "src": "4736:20:28"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6043,
                                      "type": "uint256",
                                      "value": "feeGrowthBelow0X128"
                                    },
                                    "id": 6116,
                                    "name": "Identifier",
                                    "src": "4759:19:28"
                                  }
                                ],
                                "id": 6117,
                                "name": "BinaryOperation",
                                "src": "4736:42:28"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6079,
                                  "type": "uint256",
                                  "value": "feeGrowthAbove0X128"
                                },
                                "id": 6118,
                                "name": "Identifier",
                                "src": "4781:19:28"
                              }
                            ],
                            "id": 6119,
                            "name": "BinaryOperation",
                            "src": "4736:64:28"
                          }
                        ],
                        "id": 6120,
                        "name": "Assignment",
                        "src": "4713:87:28"
                      }
                    ],
                    "id": 6121,
                    "name": "ExpressionStatement",
                    "src": "4713:87:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6028,
                              "type": "uint256",
                              "value": "feeGrowthInside1X128"
                            },
                            "id": 6122,
                            "name": "Identifier",
                            "src": "4810:20:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6023,
                                      "type": "uint256",
                                      "value": "feeGrowthGlobal1X128"
                                    },
                                    "id": 6123,
                                    "name": "Identifier",
                                    "src": "4833:20:28"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6046,
                                      "type": "uint256",
                                      "value": "feeGrowthBelow1X128"
                                    },
                                    "id": 6124,
                                    "name": "Identifier",
                                    "src": "4856:19:28"
                                  }
                                ],
                                "id": 6125,
                                "name": "BinaryOperation",
                                "src": "4833:42:28"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6082,
                                  "type": "uint256",
                                  "value": "feeGrowthAbove1X128"
                                },
                                "id": 6126,
                                "name": "Identifier",
                                "src": "4878:19:28"
                              }
                            ],
                            "id": 6127,
                            "name": "BinaryOperation",
                            "src": "4833:64:28"
                          }
                        ],
                        "id": 6128,
                        "name": "Assignment",
                        "src": "4810:87:28"
                      }
                    ],
                    "id": 6129,
                    "name": "ExpressionStatement",
                    "src": "4810:87:28"
                  }
                ],
                "id": 6130,
                "name": "Block",
                "src": "3655:1249:28"
              }
            ],
            "id": 6131,
            "name": "FunctionDefinition",
            "src": "3335:1569:28"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "update",
              "scope": 6379,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\n @param self The mapping containing all tick information for initialized ticks\n @param tick The tick that will be updated\n @param tickCurrent The current tick\n @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n @param tickCumulative The tick * time elapsed since the pool was first initialized\n @param time The current block timestamp cast to a uint32\n @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n @param maxLiquidity The maximum liquidity allocation for a single tick\n @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa"
                },
                "id": 6132,
                "name": "StructuredDocumentation",
                "src": "4910:1186:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "mapping(int24 => struct Tick.Info)",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "mapping(int24 => struct Tick.Info)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 6133,
                            "name": "ElementaryTypeName",
                            "src": "6134:5:28"
                          },
                          {
                            "attributes": {
                              "name": "Tick.Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6134,
                            "name": "UserDefinedTypeName",
                            "src": "6143:9:28"
                          }
                        ],
                        "id": 6135,
                        "name": "Mapping",
                        "src": "6126:27:28"
                      }
                    ],
                    "id": 6136,
                    "name": "VariableDeclaration",
                    "src": "6126:40:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tick",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6137,
                        "name": "ElementaryTypeName",
                        "src": "6176:5:28"
                      }
                    ],
                    "id": 6138,
                    "name": "VariableDeclaration",
                    "src": "6176:10:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickCurrent",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6139,
                        "name": "ElementaryTypeName",
                        "src": "6196:5:28"
                      }
                    ],
                    "id": 6140,
                    "name": "VariableDeclaration",
                    "src": "6196:17:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "liquidityDelta",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 6141,
                        "name": "ElementaryTypeName",
                        "src": "6223:6:28"
                      }
                    ],
                    "id": 6142,
                    "name": "VariableDeclaration",
                    "src": "6223:21:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobal0X128",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6143,
                        "name": "ElementaryTypeName",
                        "src": "6254:7:28"
                      }
                    ],
                    "id": 6144,
                    "name": "VariableDeclaration",
                    "src": "6254:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobal1X128",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6145,
                        "name": "ElementaryTypeName",
                        "src": "6292:7:28"
                      }
                    ],
                    "id": 6146,
                    "name": "VariableDeclaration",
                    "src": "6292:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "secondsPerLiquidityCumulativeX128",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 6147,
                        "name": "ElementaryTypeName",
                        "src": "6330:7:28"
                      }
                    ],
                    "id": 6148,
                    "name": "VariableDeclaration",
                    "src": "6330:41:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickCumulative",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int56",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int56",
                          "type": "int56"
                        },
                        "id": 6149,
                        "name": "ElementaryTypeName",
                        "src": "6381:5:28"
                      }
                    ],
                    "id": 6150,
                    "name": "VariableDeclaration",
                    "src": "6381:20:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "time",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 6151,
                        "name": "ElementaryTypeName",
                        "src": "6411:6:28"
                      }
                    ],
                    "id": 6152,
                    "name": "VariableDeclaration",
                    "src": "6411:11:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "upper",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 6153,
                        "name": "ElementaryTypeName",
                        "src": "6432:4:28"
                      }
                    ],
                    "id": 6154,
                    "name": "VariableDeclaration",
                    "src": "6432:10:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "maxLiquidity",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint128",
                          "type": "uint128"
                        },
                        "id": 6155,
                        "name": "ElementaryTypeName",
                        "src": "6452:7:28"
                      }
                    ],
                    "id": 6156,
                    "name": "VariableDeclaration",
                    "src": "6452:20:28"
                  }
                ],
                "id": 6157,
                "name": "ParameterList",
                "src": "6116:362:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "flipped",
                      "scope": 6281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 6158,
                        "name": "ElementaryTypeName",
                        "src": "6497:4:28"
                      }
                    ],
                    "id": 6159,
                    "name": "VariableDeclaration",
                    "src": "6497:12:28"
                  }
                ],
                "id": 6160,
                "name": "ParameterList",
                "src": "6496:14:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6164
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "info",
                          "scope": 6280,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Tick.Info",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Tick.Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6163,
                            "name": "UserDefinedTypeName",
                            "src": "6521:9:28"
                          }
                        ],
                        "id": 6164,
                        "name": "VariableDeclaration",
                        "src": "6521:22:28"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Tick.Info storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6136,
                              "type": "mapping(int24 => struct Tick.Info storage ref)",
                              "value": "self"
                            },
                            "id": 6165,
                            "name": "Identifier",
                            "src": "6546:4:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "int24",
                              "value": "tick"
                            },
                            "id": 6166,
                            "name": "Identifier",
                            "src": "6551:4:28"
                          }
                        ],
                        "id": 6167,
                        "name": "IndexAccess",
                        "src": "6546:10:28"
                      }
                    ],
                    "id": 6168,
                    "name": "VariableDeclarationStatement",
                    "src": "6521:35:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6170
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "liquidityGrossBefore",
                          "scope": 6280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint128",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint128",
                              "type": "uint128"
                            },
                            "id": 6169,
                            "name": "ElementaryTypeName",
                            "src": "6567:7:28"
                          }
                        ],
                        "id": 6170,
                        "name": "VariableDeclaration",
                        "src": "6567:28:28"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "liquidityGross",
                          "referencedDeclaration": 5942,
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6164,
                              "type": "struct Tick.Info storage pointer",
                              "value": "info"
                            },
                            "id": 6171,
                            "name": "Identifier",
                            "src": "6598:4:28"
                          }
                        ],
                        "id": 6172,
                        "name": "MemberAccess",
                        "src": "6598:19:28"
                      }
                    ],
                    "id": 6173,
                    "name": "VariableDeclarationStatement",
                    "src": "6567:50:28"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6175
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "liquidityGrossAfter",
                          "scope": 6280,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint128",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint128",
                              "type": "uint128"
                            },
                            "id": 6174,
                            "name": "ElementaryTypeName",
                            "src": "6627:7:28"
                          }
                        ],
                        "id": 6175,
                        "name": "VariableDeclaration",
                        "src": "6627:27:28"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "addDelta",
                              "referencedDeclaration": 4041,
                              "type": "function (uint128,int128) pure returns (uint128)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4042,
                                  "type": "type(library LiquidityMath)",
                                  "value": "LiquidityMath"
                                },
                                "id": 6176,
                                "name": "Identifier",
                                "src": "6657:13:28"
                              }
                            ],
                            "id": 6177,
                            "name": "MemberAccess",
                            "src": "6657:22:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6170,
                              "type": "uint128",
                              "value": "liquidityGrossBefore"
                            },
                            "id": 6178,
                            "name": "Identifier",
                            "src": "6680:20:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6142,
                              "type": "int128",
                              "value": "liquidityDelta"
                            },
                            "id": 6179,
                            "name": "Identifier",
                            "src": "6702:14:28"
                          }
                        ],
                        "id": 6180,
                        "name": "FunctionCall",
                        "src": "6657:60:28"
                      }
                    ],
                    "id": 6181,
                    "name": "VariableDeclarationStatement",
                    "src": "6627:90:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48",
                                  "typeString": "literal_string \"LO\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6182,
                            "name": "Identifier",
                            "src": "6728:7:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6175,
                                  "type": "uint128",
                                  "value": "liquidityGrossAfter"
                                },
                                "id": 6183,
                                "name": "Identifier",
                                "src": "6736:19:28"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6156,
                                  "type": "uint128",
                                  "value": "maxLiquidity"
                                },
                                "id": 6184,
                                "name": "Identifier",
                                "src": "6759:12:28"
                              }
                            ],
                            "id": 6185,
                            "name": "BinaryOperation",
                            "src": "6736:35:28"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4c4f",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"LO\"",
                              "value": "LO"
                            },
                            "id": 6186,
                            "name": "Literal",
                            "src": "6773:4:28"
                          }
                        ],
                        "id": 6187,
                        "name": "FunctionCall",
                        "src": "6728:50:28"
                      }
                    ],
                    "id": 6188,
                    "name": "ExpressionStatement",
                    "src": "6728:50:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6159,
                              "type": "bool",
                              "value": "flipped"
                            },
                            "id": 6189,
                            "name": "Identifier",
                            "src": "6789:7:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6175,
                                          "type": "uint128",
                                          "value": "liquidityGrossAfter"
                                        },
                                        "id": 6190,
                                        "name": "Identifier",
                                        "src": "6800:19:28"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 6191,
                                        "name": "Literal",
                                        "src": "6823:1:28"
                                      }
                                    ],
                                    "id": 6192,
                                    "name": "BinaryOperation",
                                    "src": "6800:24:28"
                                  }
                                ],
                                "id": 6193,
                                "name": "TupleExpression",
                                "src": "6799:26:28"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6170,
                                          "type": "uint128",
                                          "value": "liquidityGrossBefore"
                                        },
                                        "id": 6194,
                                        "name": "Identifier",
                                        "src": "6830:20:28"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 6195,
                                        "name": "Literal",
                                        "src": "6854:1:28"
                                      }
                                    ],
                                    "id": 6196,
                                    "name": "BinaryOperation",
                                    "src": "6830:25:28"
                                  }
                                ],
                                "id": 6197,
                                "name": "TupleExpression",
                                "src": "6829:27:28"
                              }
                            ],
                            "id": 6198,
                            "name": "BinaryOperation",
                            "src": "6799:57:28"
                          }
                        ],
                        "id": 6199,
                        "name": "Assignment",
                        "src": "6789:67:28"
                      }
                    ],
                    "id": 6200,
                    "name": "ExpressionStatement",
                    "src": "6789:67:28"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6170,
                              "type": "uint128",
                              "value": "liquidityGrossBefore"
                            },
                            "id": 6201,
                            "name": "Identifier",
                            "src": "6871:20:28"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 6202,
                            "name": "Literal",
                            "src": "6895:1:28"
                          }
                        ],
                        "id": 6203,
                        "name": "BinaryOperation",
                        "src": "6871:25:28"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "int24",
                                      "value": "tick"
                                    },
                                    "id": 6204,
                                    "name": "Identifier",
                                    "src": "7028:4:28"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6140,
                                      "type": "int24",
                                      "value": "tickCurrent"
                                    },
                                    "id": 6205,
                                    "name": "Identifier",
                                    "src": "7036:11:28"
                                  }
                                ],
                                "id": 6206,
                                "name": "BinaryOperation",
                                "src": "7028:19:28"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "feeGrowthOutside0X128",
                                              "referencedDeclaration": 5946,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6164,
                                                  "type": "struct Tick.Info storage pointer",
                                                  "value": "info"
                                                },
                                                "id": 6207,
                                                "name": "Identifier",
                                                "src": "7067:4:28"
                                              }
                                            ],
                                            "id": 6209,
                                            "name": "MemberAccess",
                                            "src": "7067:26:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6144,
                                              "type": "uint256",
                                              "value": "feeGrowthGlobal0X128"
                                            },
                                            "id": 6210,
                                            "name": "Identifier",
                                            "src": "7096:20:28"
                                          }
                                        ],
                                        "id": 6211,
                                        "name": "Assignment",
                                        "src": "7067:49:28"
                                      }
                                    ],
                                    "id": 6212,
                                    "name": "ExpressionStatement",
                                    "src": "7067:49:28"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "feeGrowthOutside1X128",
                                              "referencedDeclaration": 5948,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6164,
                                                  "type": "struct Tick.Info storage pointer",
                                                  "value": "info"
                                                },
                                                "id": 6213,
                                                "name": "Identifier",
                                                "src": "7134:4:28"
                                              }
                                            ],
                                            "id": 6215,
                                            "name": "MemberAccess",
                                            "src": "7134:26:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6146,
                                              "type": "uint256",
                                              "value": "feeGrowthGlobal1X128"
                                            },
                                            "id": 6216,
                                            "name": "Identifier",
                                            "src": "7163:20:28"
                                          }
                                        ],
                                        "id": 6217,
                                        "name": "Assignment",
                                        "src": "7134:49:28"
                                      }
                                    ],
                                    "id": 6218,
                                    "name": "ExpressionStatement",
                                    "src": "7134:49:28"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint160"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "secondsPerLiquidityOutsideX128",
                                              "referencedDeclaration": 5952,
                                              "type": "uint160"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6164,
                                                  "type": "struct Tick.Info storage pointer",
                                                  "value": "info"
                                                },
                                                "id": 6219,
                                                "name": "Identifier",
                                                "src": "7201:4:28"
                                              }
                                            ],
                                            "id": 6221,
                                            "name": "MemberAccess",
                                            "src": "7201:35:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6148,
                                              "type": "uint160",
                                              "value": "secondsPerLiquidityCumulativeX128"
                                            },
                                            "id": 6222,
                                            "name": "Identifier",
                                            "src": "7239:33:28"
                                          }
                                        ],
                                        "id": 6223,
                                        "name": "Assignment",
                                        "src": "7201:71:28"
                                      }
                                    ],
                                    "id": 6224,
                                    "name": "ExpressionStatement",
                                    "src": "7201:71:28"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "int56"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "tickCumulativeOutside",
                                              "referencedDeclaration": 5950,
                                              "type": "int56"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6164,
                                                  "type": "struct Tick.Info storage pointer",
                                                  "value": "info"
                                                },
                                                "id": 6225,
                                                "name": "Identifier",
                                                "src": "7290:4:28"
                                              }
                                            ],
                                            "id": 6227,
                                            "name": "MemberAccess",
                                            "src": "7290:26:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6150,
                                              "type": "int56",
                                              "value": "tickCumulative"
                                            },
                                            "id": 6228,
                                            "name": "Identifier",
                                            "src": "7319:14:28"
                                          }
                                        ],
                                        "id": 6229,
                                        "name": "Assignment",
                                        "src": "7290:43:28"
                                      }
                                    ],
                                    "id": 6230,
                                    "name": "ExpressionStatement",
                                    "src": "7290:43:28"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint32"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "secondsOutside",
                                              "referencedDeclaration": 5954,
                                              "type": "uint32"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6164,
                                                  "type": "struct Tick.Info storage pointer",
                                                  "value": "info"
                                                },
                                                "id": 6231,
                                                "name": "Identifier",
                                                "src": "7351:4:28"
                                              }
                                            ],
                                            "id": 6233,
                                            "name": "MemberAccess",
                                            "src": "7351:19:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6152,
                                              "type": "uint32",
                                              "value": "time"
                                            },
                                            "id": 6234,
                                            "name": "Identifier",
                                            "src": "7373:4:28"
                                          }
                                        ],
                                        "id": 6235,
                                        "name": "Assignment",
                                        "src": "7351:26:28"
                                      }
                                    ],
                                    "id": 6236,
                                    "name": "ExpressionStatement",
                                    "src": "7351:26:28"
                                  }
                                ],
                                "id": 6237,
                                "name": "Block",
                                "src": "7049:343:28"
                              }
                            ],
                            "id": 6238,
                            "name": "IfStatement",
                            "src": "7024:368:28"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "initialized",
                                      "referencedDeclaration": 5956,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6164,
                                          "type": "struct Tick.Info storage pointer",
                                          "value": "info"
                                        },
                                        "id": 6239,
                                        "name": "Identifier",
                                        "src": "7405:4:28"
                                      }
                                    ],
                                    "id": 6241,
                                    "name": "MemberAccess",
                                    "src": "7405:16:28"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "74727565",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "true"
                                    },
                                    "id": 6242,
                                    "name": "Literal",
                                    "src": "7424:4:28"
                                  }
                                ],
                                "id": 6243,
                                "name": "Assignment",
                                "src": "7405:23:28"
                              }
                            ],
                            "id": 6244,
                            "name": "ExpressionStatement",
                            "src": "7405:23:28"
                          }
                        ],
                        "id": 6245,
                        "name": "Block",
                        "src": "6898:541:28"
                      }
                    ],
                    "id": 6246,
                    "name": "IfStatement",
                    "src": "6867:572:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "liquidityGross",
                              "referencedDeclaration": 5942,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6164,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6247,
                                "name": "Identifier",
                                "src": "7449:4:28"
                              }
                            ],
                            "id": 6249,
                            "name": "MemberAccess",
                            "src": "7449:19:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6175,
                              "type": "uint128",
                              "value": "liquidityGrossAfter"
                            },
                            "id": 6250,
                            "name": "Identifier",
                            "src": "7471:19:28"
                          }
                        ],
                        "id": 6251,
                        "name": "Assignment",
                        "src": "7449:41:28"
                      }
                    ],
                    "id": 6252,
                    "name": "ExpressionStatement",
                    "src": "7449:41:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "int128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "liquidityNet",
                              "referencedDeclaration": 5944,
                              "type": "int128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6164,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6253,
                                "name": "Identifier",
                                "src": "7616:4:28"
                              }
                            ],
                            "id": 6255,
                            "name": "MemberAccess",
                            "src": "7616:17:28"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "int128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6154,
                                  "type": "bool",
                                  "value": "upper"
                                },
                                "id": 6256,
                                "name": "Identifier",
                                "src": "7636:5:28"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "int128",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "toInt128",
                                      "referencedDeclaration": 5125,
                                      "type": "function (int256) pure returns (int128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "int256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int128",
                                                  "typeString": "int128"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "sub",
                                              "referencedDeclaration": 4171,
                                              "type": "function (int256,int256) pure returns (int256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int128",
                                                          "typeString": "int128"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "type": "type(int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "name": "int256"
                                                        },
                                                        "id": 6257,
                                                        "name": "ElementaryTypeName",
                                                        "src": "7656:6:28"
                                                      }
                                                    ],
                                                    "id": 6258,
                                                    "name": "ElementaryTypeNameExpression",
                                                    "src": "7656:6:28"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "liquidityNet",
                                                      "referencedDeclaration": 5944,
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6164,
                                                          "type": "struct Tick.Info storage pointer",
                                                          "value": "info"
                                                        },
                                                        "id": 6259,
                                                        "name": "Identifier",
                                                        "src": "7663:4:28"
                                                      }
                                                    ],
                                                    "id": 6260,
                                                    "name": "MemberAccess",
                                                    "src": "7663:17:28"
                                                  }
                                                ],
                                                "id": 6261,
                                                "name": "FunctionCall",
                                                "src": "7656:25:28"
                                              }
                                            ],
                                            "id": 6262,
                                            "name": "MemberAccess",
                                            "src": "7656:29:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6142,
                                              "type": "int128",
                                              "value": "liquidityDelta"
                                            },
                                            "id": 6263,
                                            "name": "Identifier",
                                            "src": "7686:14:28"
                                          }
                                        ],
                                        "id": 6264,
                                        "name": "FunctionCall",
                                        "src": "7656:45:28"
                                      }
                                    ],
                                    "id": 6265,
                                    "name": "MemberAccess",
                                    "src": "7656:54:28"
                                  }
                                ],
                                "id": 6266,
                                "name": "FunctionCall",
                                "src": "7656:56:28"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "int128",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "toInt128",
                                      "referencedDeclaration": 5125,
                                      "type": "function (int256) pure returns (int128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "int256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int128",
                                                  "typeString": "int128"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "add",
                                              "referencedDeclaration": 4144,
                                              "type": "function (int256,int256) pure returns (int256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "int256",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int128",
                                                          "typeString": "int128"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "type": "type(int256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "name": "int256"
                                                        },
                                                        "id": 6267,
                                                        "name": "ElementaryTypeName",
                                                        "src": "7727:6:28"
                                                      }
                                                    ],
                                                    "id": 6268,
                                                    "name": "ElementaryTypeNameExpression",
                                                    "src": "7727:6:28"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "liquidityNet",
                                                      "referencedDeclaration": 5944,
                                                      "type": "int128"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6164,
                                                          "type": "struct Tick.Info storage pointer",
                                                          "value": "info"
                                                        },
                                                        "id": 6269,
                                                        "name": "Identifier",
                                                        "src": "7734:4:28"
                                                      }
                                                    ],
                                                    "id": 6270,
                                                    "name": "MemberAccess",
                                                    "src": "7734:17:28"
                                                  }
                                                ],
                                                "id": 6271,
                                                "name": "FunctionCall",
                                                "src": "7727:25:28"
                                              }
                                            ],
                                            "id": 6272,
                                            "name": "MemberAccess",
                                            "src": "7727:29:28"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6142,
                                              "type": "int128",
                                              "value": "liquidityDelta"
                                            },
                                            "id": 6273,
                                            "name": "Identifier",
                                            "src": "7757:14:28"
                                          }
                                        ],
                                        "id": 6274,
                                        "name": "FunctionCall",
                                        "src": "7727:45:28"
                                      }
                                    ],
                                    "id": 6275,
                                    "name": "MemberAccess",
                                    "src": "7727:54:28"
                                  }
                                ],
                                "id": 6276,
                                "name": "FunctionCall",
                                "src": "7727:56:28"
                              }
                            ],
                            "id": 6277,
                            "name": "Conditional",
                            "src": "7636:147:28"
                          }
                        ],
                        "id": 6278,
                        "name": "Assignment",
                        "src": "7616:167:28"
                      }
                    ],
                    "id": 6279,
                    "name": "ExpressionStatement",
                    "src": "7616:167:28"
                  }
                ],
                "id": 6280,
                "name": "Block",
                "src": "6511:1279:28"
              }
            ],
            "id": 6281,
            "name": "FunctionDefinition",
            "src": "6101:1689:28"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "clear",
              "scope": 6379,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Clears tick data\n @param self The mapping containing all initialized tick information for initialized ticks\n @param tick The tick that will be cleared"
                },
                "id": 6282,
                "name": "StructuredDocumentation",
                "src": "7796:176:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 6297,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "mapping(int24 => struct Tick.Info)",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "mapping(int24 => struct Tick.Info)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 6283,
                            "name": "ElementaryTypeName",
                            "src": "8000:5:28"
                          },
                          {
                            "attributes": {
                              "name": "Tick.Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6284,
                            "name": "UserDefinedTypeName",
                            "src": "8009:9:28"
                          }
                        ],
                        "id": 6285,
                        "name": "Mapping",
                        "src": "7992:27:28"
                      }
                    ],
                    "id": 6286,
                    "name": "VariableDeclaration",
                    "src": "7992:40:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tick",
                      "scope": 6297,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6287,
                        "name": "ElementaryTypeName",
                        "src": "8034:5:28"
                      }
                    ],
                    "id": 6288,
                    "name": "VariableDeclaration",
                    "src": "8034:10:28"
                  }
                ],
                "id": 6289,
                "name": "ParameterList",
                "src": "7991:54:28"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6290,
                "name": "ParameterList",
                "src": "8055:0:28"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Tick.Info storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6286,
                                  "type": "mapping(int24 => struct Tick.Info storage ref)",
                                  "value": "self"
                                },
                                "id": 6291,
                                "name": "Identifier",
                                "src": "8072:4:28"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6288,
                                  "type": "int24",
                                  "value": "tick"
                                },
                                "id": 6292,
                                "name": "Identifier",
                                "src": "8077:4:28"
                              }
                            ],
                            "id": 6293,
                            "name": "IndexAccess",
                            "src": "8072:10:28"
                          }
                        ],
                        "id": 6294,
                        "name": "UnaryOperation",
                        "src": "8065:17:28"
                      }
                    ],
                    "id": 6295,
                    "name": "ExpressionStatement",
                    "src": "8065:17:28"
                  }
                ],
                "id": 6296,
                "name": "Block",
                "src": "8055:34:28"
              }
            ],
            "id": 6297,
            "name": "FunctionDefinition",
            "src": "7977:112:28"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "cross",
              "scope": 6379,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Transitions to next tick as needed by price movement\n @param self The mapping containing all tick information for initialized ticks\n @param tick The destination tick of the transition\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n @param tickCumulative The tick * time elapsed since the pool was first initialized\n @param time The current block.timestamp\n @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)"
                },
                "id": 6298,
                "name": "StructuredDocumentation",
                "src": "8095:761:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "self",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "mapping(int24 => struct Tick.Info)",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "mapping(int24 => struct Tick.Info)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int24",
                              "type": "int24"
                            },
                            "id": 6299,
                            "name": "ElementaryTypeName",
                            "src": "8893:5:28"
                          },
                          {
                            "attributes": {
                              "name": "Tick.Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6300,
                            "name": "UserDefinedTypeName",
                            "src": "8902:9:28"
                          }
                        ],
                        "id": 6301,
                        "name": "Mapping",
                        "src": "8885:27:28"
                      }
                    ],
                    "id": 6302,
                    "name": "VariableDeclaration",
                    "src": "8885:40:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tick",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int24",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int24",
                          "type": "int24"
                        },
                        "id": 6303,
                        "name": "ElementaryTypeName",
                        "src": "8935:5:28"
                      }
                    ],
                    "id": 6304,
                    "name": "VariableDeclaration",
                    "src": "8935:10:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobal0X128",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6305,
                        "name": "ElementaryTypeName",
                        "src": "8955:7:28"
                      }
                    ],
                    "id": 6306,
                    "name": "VariableDeclaration",
                    "src": "8955:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobal1X128",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6307,
                        "name": "ElementaryTypeName",
                        "src": "8993:7:28"
                      }
                    ],
                    "id": 6308,
                    "name": "VariableDeclaration",
                    "src": "8993:28:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "secondsPerLiquidityCumulativeX128",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 6309,
                        "name": "ElementaryTypeName",
                        "src": "9031:7:28"
                      }
                    ],
                    "id": 6310,
                    "name": "VariableDeclaration",
                    "src": "9031:41:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tickCumulative",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int56",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int56",
                          "type": "int56"
                        },
                        "id": 6311,
                        "name": "ElementaryTypeName",
                        "src": "9082:5:28"
                      }
                    ],
                    "id": 6312,
                    "name": "VariableDeclaration",
                    "src": "9082:20:28"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "time",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 6313,
                        "name": "ElementaryTypeName",
                        "src": "9112:6:28"
                      }
                    ],
                    "id": 6314,
                    "name": "VariableDeclaration",
                    "src": "9112:11:28"
                  }
                ],
                "id": 6315,
                "name": "ParameterList",
                "src": "8875:254:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "liquidityNet",
                      "scope": 6378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 6316,
                        "name": "ElementaryTypeName",
                        "src": "9148:6:28"
                      }
                    ],
                    "id": 6317,
                    "name": "VariableDeclaration",
                    "src": "9148:19:28"
                  }
                ],
                "id": 6318,
                "name": "ParameterList",
                "src": "9147:21:28"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6322
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "info",
                          "scope": 6377,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Tick.Info",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "Tick.Info",
                              "referencedDeclaration": 5957,
                              "type": "struct Tick.Info"
                            },
                            "id": 6321,
                            "name": "UserDefinedTypeName",
                            "src": "9179:9:28"
                          }
                        ],
                        "id": 6322,
                        "name": "VariableDeclaration",
                        "src": "9179:22:28"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Tick.Info storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6302,
                              "type": "mapping(int24 => struct Tick.Info storage ref)",
                              "value": "self"
                            },
                            "id": 6323,
                            "name": "Identifier",
                            "src": "9204:4:28"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6304,
                              "type": "int24",
                              "value": "tick"
                            },
                            "id": 6324,
                            "name": "Identifier",
                            "src": "9209:4:28"
                          }
                        ],
                        "id": 6325,
                        "name": "IndexAccess",
                        "src": "9204:10:28"
                      }
                    ],
                    "id": 6326,
                    "name": "VariableDeclarationStatement",
                    "src": "9179:35:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "feeGrowthOutside0X128",
                              "referencedDeclaration": 5946,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6322,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6327,
                                "name": "Identifier",
                                "src": "9224:4:28"
                              }
                            ],
                            "id": 6329,
                            "name": "MemberAccess",
                            "src": "9224:26:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6306,
                                  "type": "uint256",
                                  "value": "feeGrowthGlobal0X128"
                                },
                                "id": 6330,
                                "name": "Identifier",
                                "src": "9253:20:28"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "feeGrowthOutside0X128",
                                  "referencedDeclaration": 5946,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6322,
                                      "type": "struct Tick.Info storage pointer",
                                      "value": "info"
                                    },
                                    "id": 6331,
                                    "name": "Identifier",
                                    "src": "9276:4:28"
                                  }
                                ],
                                "id": 6332,
                                "name": "MemberAccess",
                                "src": "9276:26:28"
                              }
                            ],
                            "id": 6333,
                            "name": "BinaryOperation",
                            "src": "9253:49:28"
                          }
                        ],
                        "id": 6334,
                        "name": "Assignment",
                        "src": "9224:78:28"
                      }
                    ],
                    "id": 6335,
                    "name": "ExpressionStatement",
                    "src": "9224:78:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "feeGrowthOutside1X128",
                              "referencedDeclaration": 5948,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6322,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6336,
                                "name": "Identifier",
                                "src": "9312:4:28"
                              }
                            ],
                            "id": 6338,
                            "name": "MemberAccess",
                            "src": "9312:26:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6308,
                                  "type": "uint256",
                                  "value": "feeGrowthGlobal1X128"
                                },
                                "id": 6339,
                                "name": "Identifier",
                                "src": "9341:20:28"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "feeGrowthOutside1X128",
                                  "referencedDeclaration": 5948,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6322,
                                      "type": "struct Tick.Info storage pointer",
                                      "value": "info"
                                    },
                                    "id": 6340,
                                    "name": "Identifier",
                                    "src": "9364:4:28"
                                  }
                                ],
                                "id": 6341,
                                "name": "MemberAccess",
                                "src": "9364:26:28"
                              }
                            ],
                            "id": 6342,
                            "name": "BinaryOperation",
                            "src": "9341:49:28"
                          }
                        ],
                        "id": 6343,
                        "name": "Assignment",
                        "src": "9312:78:28"
                      }
                    ],
                    "id": 6344,
                    "name": "ExpressionStatement",
                    "src": "9312:78:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint160"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "secondsPerLiquidityOutsideX128",
                              "referencedDeclaration": 5952,
                              "type": "uint160"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6322,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6345,
                                "name": "Identifier",
                                "src": "9400:4:28"
                              }
                            ],
                            "id": 6347,
                            "name": "MemberAccess",
                            "src": "9400:35:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint160"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6310,
                                  "type": "uint160",
                                  "value": "secondsPerLiquidityCumulativeX128"
                                },
                                "id": 6348,
                                "name": "Identifier",
                                "src": "9438:33:28"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "secondsPerLiquidityOutsideX128",
                                  "referencedDeclaration": 5952,
                                  "type": "uint160"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6322,
                                      "type": "struct Tick.Info storage pointer",
                                      "value": "info"
                                    },
                                    "id": 6349,
                                    "name": "Identifier",
                                    "src": "9474:4:28"
                                  }
                                ],
                                "id": 6350,
                                "name": "MemberAccess",
                                "src": "9474:35:28"
                              }
                            ],
                            "id": 6351,
                            "name": "BinaryOperation",
                            "src": "9438:71:28"
                          }
                        ],
                        "id": 6352,
                        "name": "Assignment",
                        "src": "9400:109:28"
                      }
                    ],
                    "id": 6353,
                    "name": "ExpressionStatement",
                    "src": "9400:109:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "int56"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "tickCumulativeOutside",
                              "referencedDeclaration": 5950,
                              "type": "int56"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6322,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6354,
                                "name": "Identifier",
                                "src": "9519:4:28"
                              }
                            ],
                            "id": 6356,
                            "name": "MemberAccess",
                            "src": "9519:26:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_int56",
                                "typeString": "int56"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "int56"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6312,
                                  "type": "int56",
                                  "value": "tickCumulative"
                                },
                                "id": 6357,
                                "name": "Identifier",
                                "src": "9548:14:28"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tickCumulativeOutside",
                                  "referencedDeclaration": 5950,
                                  "type": "int56"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6322,
                                      "type": "struct Tick.Info storage pointer",
                                      "value": "info"
                                    },
                                    "id": 6358,
                                    "name": "Identifier",
                                    "src": "9565:4:28"
                                  }
                                ],
                                "id": 6359,
                                "name": "MemberAccess",
                                "src": "9565:26:28"
                              }
                            ],
                            "id": 6360,
                            "name": "BinaryOperation",
                            "src": "9548:43:28"
                          }
                        ],
                        "id": 6361,
                        "name": "Assignment",
                        "src": "9519:72:28"
                      }
                    ],
                    "id": 6362,
                    "name": "ExpressionStatement",
                    "src": "9519:72:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "secondsOutside",
                              "referencedDeclaration": 5954,
                              "type": "uint32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6322,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6363,
                                "name": "Identifier",
                                "src": "9601:4:28"
                              }
                            ],
                            "id": 6365,
                            "name": "MemberAccess",
                            "src": "9601:19:28"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6314,
                                  "type": "uint32",
                                  "value": "time"
                                },
                                "id": 6366,
                                "name": "Identifier",
                                "src": "9623:4:28"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "secondsOutside",
                                  "referencedDeclaration": 5954,
                                  "type": "uint32"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6322,
                                      "type": "struct Tick.Info storage pointer",
                                      "value": "info"
                                    },
                                    "id": 6367,
                                    "name": "Identifier",
                                    "src": "9630:4:28"
                                  }
                                ],
                                "id": 6368,
                                "name": "MemberAccess",
                                "src": "9630:19:28"
                              }
                            ],
                            "id": 6369,
                            "name": "BinaryOperation",
                            "src": "9623:26:28"
                          }
                        ],
                        "id": 6370,
                        "name": "Assignment",
                        "src": "9601:48:28"
                      }
                    ],
                    "id": 6371,
                    "name": "ExpressionStatement",
                    "src": "9601:48:28"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "int128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6317,
                              "type": "int128",
                              "value": "liquidityNet"
                            },
                            "id": 6372,
                            "name": "Identifier",
                            "src": "9659:12:28"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "liquidityNet",
                              "referencedDeclaration": 5944,
                              "type": "int128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6322,
                                  "type": "struct Tick.Info storage pointer",
                                  "value": "info"
                                },
                                "id": 6373,
                                "name": "Identifier",
                                "src": "9674:4:28"
                              }
                            ],
                            "id": 6374,
                            "name": "MemberAccess",
                            "src": "9674:17:28"
                          }
                        ],
                        "id": 6375,
                        "name": "Assignment",
                        "src": "9659:32:28"
                      }
                    ],
                    "id": 6376,
                    "name": "ExpressionStatement",
                    "src": "9659:32:28"
                  }
                ],
                "id": 6377,
                "name": "Block",
                "src": "9169:529:28"
              }
            ],
            "id": 6378,
            "name": "FunctionDefinition",
            "src": "8861:837:28"
          }
        ],
        "id": 6379,
        "name": "ContractDefinition",
        "src": "277:9423:28"
      }
    ],
    "id": 6380,
    "name": "SourceUnit",
    "src": "37:9664:28"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2022-01-17T20:05:41.794Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "title": "Tick",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "notice": "Contains functions for managing tick processes and relevant calculations",
    "version": 1
  }
}