{
  "contractName": "SortedDoublyLL",
  "abi": [],
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582075b77b32caddbed2be9bdbf1d846559d5c78e6a6e5c85890092cfc27da2a32d20029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582075b77b32caddbed2be9bdbf1d846559d5c78e6a6e5c85890092cfc27da2a32d20029",
  "sourceMap": "1251:12905:1:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "1251:12905:1:-;;;;;;;;",
  "source": "pragma solidity 0.5.0;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n\n/*\n * @title A sorted doubly linked list with nodes sorted in descending order. Optionally accepts insert position hints\n *\n * Given a new node with a `key`, a hint is of the form `(prevId, nextId)` s.t. `prevId` and `nextId` are adjacent in the list.\n * `prevId` is a node with a key >= `key` and `nextId` is a node with a key <= `key`. If the sender provides a hint that is a valid insert position\n * the insert operation is a constant time storage write. However, the provided hint in a given transaction might be a valid insert position, but if other transactions are included first, when\n * the given transaction is executed the provided hint may no longer be a valid insert position. For example, one of the nodes referenced might be removed or their keys may\n * be updated such that the the pair of nodes in the hint no longer represent a valid insert position. If one of the nodes in the hint becomes invalid, we still try to use the other\n * valid node as a starting point for finding the appropriate insert position. If both nodes in the hint become invalid, we use the head of the list as a starting point\n * to find the appropriate insert position.\n */\nlibrary SortedDoublyLL {\n    using SafeMath for uint256;\n\n    // Information for a node in the list\n    struct Node {\n        uint256 key;                     // Node's key used for sorting\n        address nextId;                  // Id of next node (smaller key) in the list\n        address prevId;                  // Id of previous node (larger key) in the list\n    }\n\n    // Information for the list\n    struct Data {\n        address head;                        // Head of the list. Also the node in the list with the largest key\n        address tail;                        // Tail of the list. Also the node in the list with the smallest key\n        uint256 maxSize;                     // Maximum size of the list\n        uint256 size;                        // Current size of the list\n        mapping (address => Node) nodes;     // Track the corresponding ids for each node in the list\n    }\n\n    /*\n     * @dev Set the maximum size of the list\n     * @param _size Maximum size\n     */\n    function setMaxSize(Data storage self, uint256 _size) internal {\n        // New max size must be greater than old max size\n        require(\n            _size > self.maxSize,\n            \"new max size must be greater than old max size\"\n        );\n\n        self.maxSize = _size;\n    }\n\n    /*\n     * @dev Add a node to the list\n     * @param _id Node's id\n     * @param _key Node's key\n     * @param _prevId Id of previous node for the insert position\n     * @param _nextId Id of next node for the insert position\n     */\n    function insert(Data storage self, address _id, uint256 _key, address _prevId, address _nextId) internal {\n        // List must not be full\n        require(\n            !isFull(self),\n            \"cannot insert into a full list\"\n        );\n        // List must not already contain node\n        require(\n            !contains(self, _id),\n            \"cannot insert node that already exists\"\n        );\n        // Node id must not be null\n        require(\n            _id != address(0),\n            \"cannot insert node with a null id\"\n        );\n        // Key must be non-zero\n        require(\n            _key > 0,\n            \"cannot insert node with zero key\"\n        );\n\n        address prevId = _prevId;\n        address nextId = _nextId;\n\n        if (!validInsertPosition(self, _key, prevId, nextId)) {\n            // Sender's hint was not a valid insert position\n            // Use sender's hint to find a valid insert position\n            (prevId, nextId) = findInsertPosition(self, _key, prevId, nextId);\n        }\n\n        self.nodes[_id].key = _key;\n\n        if (prevId == address(0) && nextId == address(0)) {\n            // Insert as head and tail\n            self.head = _id;\n            self.tail = _id;\n        } else if (prevId == address(0)) {\n            // Insert before `prevId` as the head\n            self.nodes[_id].nextId = self.head;\n            self.nodes[self.head].prevId = _id;\n            self.head = _id;\n        } else if (nextId == address(0)) {\n            // Insert after `nextId` as the tail\n            self.nodes[_id].prevId = self.tail;\n            self.nodes[self.tail].nextId = _id;\n            self.tail = _id;\n        } else {\n            // Insert at insert position between `prevId` and `nextId`\n            self.nodes[_id].nextId = nextId;\n            self.nodes[_id].prevId = prevId;\n            self.nodes[prevId].nextId = _id;\n            self.nodes[nextId].prevId = _id;\n        }\n\n        self.size = self.size.add(1);\n    }\n\n    /*\n     * @dev Remove a node from the list\n     * @param _id Node's id\n     */\n    function remove(Data storage self, address _id) internal {\n        // List must contain the node\n        require(\n            contains(self, _id),\n            \"cannot remote node that does not exist\"\n        );\n\n        if (self.size > 1) {\n            // List contains more than a single node\n            if (_id == self.head) {\n                // The removed node is the head\n                // Set head to next node\n                self.head = self.nodes[_id].nextId;\n                // Set prev pointer of new head to null\n                self.nodes[self.head].prevId = address(0);\n            } else if (_id == self.tail) {\n                // The removed node is the tail\n                // Set tail to previous node\n                self.tail = self.nodes[_id].prevId;\n                // Set next pointer of new tail to null\n                self.nodes[self.tail].nextId = address(0);\n            } else {\n                // The removed node is neither the head nor the tail\n                // Set next pointer of previous node to the next node\n                self.nodes[self.nodes[_id].prevId].nextId = self.nodes[_id].nextId;\n                // Set prev pointer of next node to the previous node\n                self.nodes[self.nodes[_id].nextId].prevId = self.nodes[_id].prevId;\n            }\n        } else {\n            // List contains a single node\n            // Set the head and tail to null\n            self.head = address(0);\n            self.tail = address(0);\n        }\n\n        delete self.nodes[_id];\n        self.size = self.size.sub(1);\n    }\n\n    /*\n     * @dev Update the key of a node in the list\n     * @param _id Node's id\n     * @param _newKey Node's new key\n     * @param _prevId Id of previous node for the new insert position\n     * @param _nextId Id of next node for the new insert position\n     */\n    function updateKey(Data storage self, address _id, uint256 _newKey, address _prevId, address _nextId) internal {\n        // List must contain the node\n        require(\n            contains(self, _id),\n            \"cannot update node that does not exist\"\n        );\n\n        // Remove node from the list\n        remove(self, _id);\n\n        if (_newKey > 0) {\n            // Insert node if it has a non-zero key\n            insert(self, _id, _newKey, _prevId, _nextId);\n        }\n    }\n\n    /*\n     * @dev Checks if the list contains a node\n     * @param _transcoder Address of transcoder\n     */\n    function contains(Data storage self, address _id) internal view returns (bool) {\n        // List only contains non-zero keys, so if key is non-zero the node exists\n        return self.nodes[_id].key > 0;\n    }\n\n    /*\n     * @dev Checks if the list is full\n     */\n    function isFull(Data storage self) internal view returns (bool) {\n        return self.size == self.maxSize;\n    }\n\n    /*\n     * @dev Checks if the list is empty\n     */\n    function isEmpty(Data storage self) internal view returns (bool) {\n        return self.size == 0;\n    }\n\n    /*\n     * @dev Returns the current size of the list\n     */\n    function getSize(Data storage self) internal view returns (uint256) {\n        return self.size;\n    }\n\n    /*\n     * @dev Returns the maximum size of the list\n     */\n    function getMaxSize(Data storage self) internal view returns (uint256) {\n        return self.maxSize;\n    }\n\n    /*\n     * @dev Returns the key of a node in the list\n     * @param _id Node's id\n     */\n    function getKey(Data storage self, address _id) internal view returns (uint256) {\n        return self.nodes[_id].key;\n    }\n\n    /*\n     * @dev Returns the first node in the list (node with the largest key)\n     */\n    function getFirst(Data storage self) internal view returns (address) {\n        return self.head;\n    }\n\n    /*\n     * @dev Returns the last node in the list (node with the smallest key)\n     */\n    function getLast(Data storage self) internal view returns (address) {\n        return self.tail;\n    }\n\n    /*\n     * @dev Returns the next node (with a smaller key) in the list for a given node\n     * @param _id Node's id\n     */\n    function getNext(Data storage self, address _id) internal view returns (address) {\n        return self.nodes[_id].nextId;\n    }\n\n    /*\n     * @dev Returns the previous node (with a larger key) in the list for a given node\n     * @param _id Node's id\n     */\n    function getPrev(Data storage self, address _id) internal view returns (address) {\n        return self.nodes[_id].prevId;\n    }\n\n    /*\n     * @dev Check if a pair of nodes is a valid insertion point for a new node with the given key\n     * @param _key Node's key\n     * @param _prevId Id of previous node for the insert position\n     * @param _nextId Id of next node for the insert position\n     */\n    function validInsertPosition(Data storage self, uint256 _key, address _prevId, address _nextId) internal view returns (bool) {\n        if (_prevId == address(0) && _nextId == address(0)) {\n            // `(null, null)` is a valid insert position if the list is empty\n            return isEmpty(self);\n        } else if (_prevId == address(0)) {\n            // `(null, _nextId)` is a valid insert position if `_nextId` is the head of the list\n            return self.head == _nextId && _key >= self.nodes[_nextId].key;\n        } else if (_nextId == address(0)) {\n            // `(_prevId, null)` is a valid insert position if `_prevId` is the tail of the list\n            return self.tail == _prevId && _key <= self.nodes[_prevId].key;\n        } else {\n            // `(_prevId, _nextId)` is a valid insert position if they are adjacent nodes and `_key` falls between the two nodes' keys\n            return self.nodes[_prevId].nextId == _nextId && self.nodes[_prevId].key >= _key && _key >= self.nodes[_nextId].key;\n        }\n    }\n\n    /*\n     * @dev Descend the list (larger keys to smaller keys) to find a valid insert position\n     * @param _key Node's key\n     * @param _startId Id of node to start ascending the list from\n     */\n    function descendList(Data storage self, uint256 _key, address _startId) internal view returns (address, address) {\n        // If `_startId` is the head, check if the insert position is before the head\n        if (self.head == _startId && _key >= self.nodes[_startId].key) {\n            return (address(0), _startId);\n        }\n\n        address prevId = _startId;\n        address nextId = self.nodes[prevId].nextId;\n\n        // Descend the list until we reach the end or until we find a valid insert position\n        while (prevId != address(0) && !validInsertPosition(self, _key, prevId, nextId)) {\n            prevId = self.nodes[prevId].nextId;\n            nextId = self.nodes[prevId].nextId;\n        }\n\n        return (prevId, nextId);\n    }\n\n    /*\n     * @dev Ascend the list (smaller keys to larger keys) to find a valid insert position\n     * @param _key Node's key\n     * @param _startId Id of node to start descending the list from\n     */\n    function ascendList(Data storage self, uint256 _key, address _startId) internal view returns (address, address) {\n        // If `_startId` is the tail, check if the insert position is after the tail\n        if (self.tail == _startId && _key <= self.nodes[_startId].key) {\n            return (_startId, address(0));\n        }\n\n        address nextId = _startId;\n        address prevId = self.nodes[nextId].prevId;\n\n        // Ascend the list until we reach the end or until we find a valid insertion point\n        while (nextId != address(0) && !validInsertPosition(self, _key, prevId, nextId)) {\n            nextId = self.nodes[nextId].prevId;\n            prevId = self.nodes[nextId].prevId;\n        }\n\n        return (prevId, nextId);\n    }\n\n    /*\n     * @dev Find the insert position for a new node with the given key\n     * @param _key Node's key\n     * @param _prevId Id of previous node for the insert position\n     * @param _nextId Id of next node for the insert position\n     */\n    function findInsertPosition(Data storage self, uint256 _key, address _prevId, address _nextId) internal view returns (address, address) {\n        address prevId = _prevId;\n        address nextId = _nextId;\n\n        if (prevId != address(0)) {\n            if (!contains(self, prevId) || _key > self.nodes[prevId].key) {\n                // `prevId` does not exist anymore or now has a smaller key than the given key\n                prevId = address(0);\n            }\n        }\n\n        if (nextId != address(0)) {\n            if (!contains(self, nextId) || _key < self.nodes[nextId].key) {\n                // `nextId` does not exist anymore or now has a larger key than the given key\n                nextId = address(0);\n            }\n        }\n\n        if (prevId == address(0) && nextId == address(0)) {\n            // No hint - descend list starting from head\n            return descendList(self, _key, self.head);\n        } else if (prevId == address(0)) {\n            // No `prevId` for hint - ascend list starting from `nextId`\n            return ascendList(self, _key, nextId);\n        } else if (nextId == address(0)) {\n            // No `nextId` for hint - descend list starting from `prevId`\n            return descendList(self, _key, prevId);\n        } else {\n            // Descend list starting from `prevId`\n            return descendList(self, _key, prevId);\n        }\n    }\n}",
  "sourcePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/SortedDoublyLL.sol",
  "ast": {
    "absolutePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/SortedDoublyLL.sol",
    "exportedSymbols": {
      "SortedDoublyLL": [
        1207
      ]
    },
    "id": 1208,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 224,
        "literals": [
          "solidity",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:22:1"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 225,
        "nodeType": "ImportDirective",
        "scope": 1208,
        "sourceUnit": 1336,
        "src": "24:59:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1207,
        "linearizedBaseContracts": [
          1207
        ],
        "name": "SortedDoublyLL",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 228,
            "libraryName": {
              "contractScope": null,
              "id": 226,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1335,
              "src": "1286:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1335",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1280:27:1",
            "typeName": {
              "id": 227,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1299:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "SortedDoublyLL.Node",
            "id": 235,
            "members": [
              {
                "constant": false,
                "id": 230,
                "name": "key",
                "nodeType": "VariableDeclaration",
                "scope": 235,
                "src": "1377:11:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 229,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1377:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 232,
                "name": "nextId",
                "nodeType": "VariableDeclaration",
                "scope": 235,
                "src": "1449:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 231,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1449:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 234,
                "name": "prevId",
                "nodeType": "VariableDeclaration",
                "scope": 235,
                "src": "1535:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 233,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1535:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Node",
            "nodeType": "StructDefinition",
            "scope": 1207,
            "src": "1355:266:1",
            "visibility": "public"
          },
          {
            "canonicalName": "SortedDoublyLL.Data",
            "id": 248,
            "members": [
              {
                "constant": false,
                "id": 237,
                "name": "head",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1681:12:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 236,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1681:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 239,
                "name": "tail",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1794:12:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 238,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1794:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 241,
                "name": "maxSize",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1908:15:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 240,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1908:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 243,
                "name": "size",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1981:12:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 242,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1981:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 247,
                "name": "nodes",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "2054:31:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                  "typeString": "mapping(address => struct SortedDoublyLL.Node)"
                },
                "typeName": {
                  "id": 246,
                  "keyType": {
                    "id": 244,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2063:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "2054:25:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                    "typeString": "mapping(address => struct SortedDoublyLL.Node)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 245,
                    "name": "Node",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 235,
                    "src": "2074:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$235_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Node"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Data",
            "nodeType": "StructDefinition",
            "scope": 1207,
            "src": "1659:494:1",
            "visibility": "public"
          },
          {
            "body": {
              "id": 269,
              "nodeType": "Block",
              "src": "2315:219:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 256,
                          "name": "_size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 252,
                          "src": "2404:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 257,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 250,
                            "src": "2412:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 258,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maxSize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 241,
                          "src": "2412:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2404:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6577206d61782073697a65206d7573742062652067726561746572207468616e206f6c64206d61782073697a65",
                        "id": 260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2438:48:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_30180cb1a055b4f426da570ff72eaa2227ac83f4e78a0723078bb5e5c76e86a9",
                          "typeString": "literal_string \"new max size must be greater than old max size\""
                        },
                        "value": "new max size must be greater than old max size"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_30180cb1a055b4f426da570ff72eaa2227ac83f4e78a0723078bb5e5c76e86a9",
                          "typeString": "literal_string \"new max size must be greater than old max size\""
                        }
                      ],
                      "id": 255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "2383:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2383:113:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 262,
                  "nodeType": "ExpressionStatement",
                  "src": "2383:113:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 263,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 250,
                        "src": "2507:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 265,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 241,
                      "src": "2507:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 266,
                      "name": "_size",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 252,
                      "src": "2522:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2507:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 268,
                  "nodeType": "ExpressionStatement",
                  "src": "2507:20:1"
                }
              ]
            },
            "documentation": null,
            "id": 270,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 250,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 270,
                  "src": "2272:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 249,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "2272:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 252,
                  "name": "_size",
                  "nodeType": "VariableDeclaration",
                  "scope": 270,
                  "src": "2291:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 251,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2291:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2271:34:1"
            },
            "returnParameters": {
              "id": 254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2315:0:1"
            },
            "scope": 1207,
            "src": "2252:282:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 491,
              "nodeType": "Block",
              "src": "2881:1869:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2945:13:1",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 285,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "2953:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            ],
                            "id": 284,
                            "name": "isFull",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 710,
                            "src": "2946:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (bool)"
                            }
                          },
                          "id": 286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2946:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e7365727420696e746f20612066756c6c206c697374",
                        "id": 288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2972:32:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c717684577a451051cd65ab3f9ba5a50cc9ef38655a6cc00364245ec33eaec6e",
                          "typeString": "literal_string \"cannot insert into a full list\""
                        },
                        "value": "cannot insert into a full list"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c717684577a451051cd65ab3f9ba5a50cc9ef38655a6cc00364245ec33eaec6e",
                          "typeString": "literal_string \"cannot insert into a full list\""
                        }
                      ],
                      "id": 283,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "2924:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2924:90:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 290,
                  "nodeType": "ExpressionStatement",
                  "src": "2924:90:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3091:20:1",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 293,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "3101:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 294,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 274,
                              "src": "3107:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 292,
                            "name": "contains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "3092:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                            }
                          },
                          "id": 295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3092:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e73657274206e6f6465207468617420616c726561647920657869737473",
                        "id": 297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3125:40:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ffcfe52afc7805b93498508456cf152482630a9e40c85ebae9fa3fdf5dc6849f",
                          "typeString": "literal_string \"cannot insert node that already exists\""
                        },
                        "value": "cannot insert node that already exists"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ffcfe52afc7805b93498508456cf152482630a9e40c85ebae9fa3fdf5dc6849f",
                          "typeString": "literal_string \"cannot insert node that already exists\""
                        }
                      ],
                      "id": 291,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "3070:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 298,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3070:105:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 299,
                  "nodeType": "ExpressionStatement",
                  "src": "3070:105:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 301,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 274,
                          "src": "3242:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3257:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3249:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3249:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "3242:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e73657274206e6f646520776974682061206e756c6c206964",
                        "id": 306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3273:35:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f95715ec28e095ea431e617f0c6f10badba370c12d4f017afba6acd890bad45",
                          "typeString": "literal_string \"cannot insert node with a null id\""
                        },
                        "value": "cannot insert node with a null id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f95715ec28e095ea431e617f0c6f10badba370c12d4f017afba6acd890bad45",
                          "typeString": "literal_string \"cannot insert node with a null id\""
                        }
                      ],
                      "id": 300,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "3221:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3221:97:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 308,
                  "nodeType": "ExpressionStatement",
                  "src": "3221:97:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 310,
                          "name": "_key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 276,
                          "src": "3381:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3388:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3381:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e73657274206e6f64652077697468207a65726f206b6579",
                        "id": 313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3403:34:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ceacbcd86fbac45605bb4ae8e2f9c00fc444955833c63d0676948eab292ac109",
                          "typeString": "literal_string \"cannot insert node with zero key\""
                        },
                        "value": "cannot insert node with zero key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ceacbcd86fbac45605bb4ae8e2f9c00fc444955833c63d0676948eab292ac109",
                          "typeString": "literal_string \"cannot insert node with zero key\""
                        }
                      ],
                      "id": 309,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "3360:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3360:87:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 315,
                  "nodeType": "ExpressionStatement",
                  "src": "3360:87:1"
                },
                {
                  "assignments": [
                    317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 317,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 491,
                      "src": "3458:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 316,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3458:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 319,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 318,
                    "name": "_prevId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 278,
                    "src": "3475:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3458:24:1"
                },
                {
                  "assignments": [
                    321
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 321,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 491,
                      "src": "3492:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 320,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3492:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 323,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 322,
                    "name": "_nextId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 280,
                    "src": "3509:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3492:24:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3531:48:1",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 325,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 272,
                          "src": "3552:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 326,
                          "name": "_key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 276,
                          "src": "3558:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 327,
                          "name": "prevId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 317,
                          "src": "3564:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 328,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 321,
                          "src": "3572:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 324,
                        "name": "validInsertPosition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "3532:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (bool)"
                        }
                      },
                      "id": 329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3532:47:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 343,
                  "nodeType": "IfStatement",
                  "src": "3527:270:1",
                  "trueBody": {
                    "id": 342,
                    "nodeType": "Block",
                    "src": "3581:216:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 331,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 317,
                                "src": "3722:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 332,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 321,
                                "src": "3730:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 333,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3721:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 335,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 272,
                                "src": "3759:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 336,
                                "name": "_key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 276,
                                "src": "3765:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 337,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 317,
                                "src": "3771:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 338,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 321,
                                "src": "3779:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 334,
                              "name": "findInsertPosition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1206,
                              "src": "3740:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (address,address)"
                              }
                            },
                            "id": 339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3740:46:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "src": "3721:65:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 341,
                        "nodeType": "ExpressionStatement",
                        "src": "3721:65:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 344,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 272,
                            "src": "3807:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 347,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nodes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 247,
                          "src": "3807:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                            "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                          }
                        },
                        "id": 348,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 346,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 274,
                          "src": "3818:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3807:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$235_storage",
                          "typeString": "struct SortedDoublyLL.Node storage ref"
                        }
                      },
                      "id": 349,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 230,
                      "src": "3807:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 350,
                      "name": "_key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 276,
                      "src": "3829:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3807:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 352,
                  "nodeType": "ExpressionStatement",
                  "src": "3807:26:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 357,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 353,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 317,
                        "src": "3848:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3866:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3858:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3858:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3848:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 362,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 358,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 321,
                        "src": "3872:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3890:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3882:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3882:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3872:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3848:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 377,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 317,
                        "src": "4012:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4030:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4022:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4022:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "4012:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 409,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 321,
                          "src": "4230:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4248:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4240:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4240:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4230:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 477,
                        "nodeType": "Block",
                        "src": "4443:262:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 441,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4528:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 444,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4528:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 445,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 443,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 274,
                                    "src": "4539:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4528:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 446,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "nextId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 232,
                                "src": "4528:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 447,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 321,
                                "src": "4553:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4528:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 449,
                            "nodeType": "ExpressionStatement",
                            "src": "4528:31:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 450,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4573:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 453,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4573:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 454,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 452,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 274,
                                    "src": "4584:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4573:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 455,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "prevId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 234,
                                "src": "4573:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 456,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 317,
                                "src": "4598:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4573:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 458,
                            "nodeType": "ExpressionStatement",
                            "src": "4573:31:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 459,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4618:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 462,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4618:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 463,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 461,
                                    "name": "prevId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 317,
                                    "src": "4629:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4618:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 464,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "nextId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 232,
                                "src": "4618:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 465,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4646:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4618:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 467,
                            "nodeType": "ExpressionStatement",
                            "src": "4618:31:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 468,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4663:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 471,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4663:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 472,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 470,
                                    "name": "nextId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 321,
                                    "src": "4674:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4663:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 473,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "prevId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 234,
                                "src": "4663:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 474,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4691:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4663:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 476,
                            "nodeType": "ExpressionStatement",
                            "src": "4663:31:1"
                          }
                        ]
                      },
                      "id": 478,
                      "nodeType": "IfStatement",
                      "src": "4226:479:1",
                      "trueBody": {
                        "id": 440,
                        "nodeType": "Block",
                        "src": "4252:185:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 414,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4315:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 417,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4315:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 418,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 416,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 274,
                                    "src": "4326:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4315:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 419,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "prevId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 234,
                                "src": "4315:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 420,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 272,
                                  "src": "4340:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 421,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tail",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 239,
                                "src": "4340:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4315:34:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 423,
                            "nodeType": "ExpressionStatement",
                            "src": "4315:34:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 424,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4363:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 428,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4363:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 429,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 426,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4374:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 427,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tail",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 239,
                                    "src": "4374:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4363:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 430,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "nextId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 232,
                                "src": "4363:28:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 431,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4394:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4363:34:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 433,
                            "nodeType": "ExpressionStatement",
                            "src": "4363:34:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 434,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 272,
                                  "src": "4411:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 436,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "tail",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 239,
                                "src": "4411:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 437,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4423:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4411:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 439,
                            "nodeType": "ExpressionStatement",
                            "src": "4411:15:1"
                          }
                        ]
                      }
                    },
                    "id": 479,
                    "nodeType": "IfStatement",
                    "src": "4008:697:1",
                    "trueBody": {
                      "id": 408,
                      "nodeType": "Block",
                      "src": "4034:186:1",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 382,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 272,
                                    "src": "4098:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 385,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "4098:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 386,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 384,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 274,
                                  "src": "4109:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4098:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 387,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "nextId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 232,
                              "src": "4098:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 388,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 272,
                                "src": "4123:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 389,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "head",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 237,
                              "src": "4123:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4098:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 391,
                          "nodeType": "ExpressionStatement",
                          "src": "4098:34:1"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 392,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 272,
                                    "src": "4146:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 396,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "4146:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 397,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 394,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 272,
                                    "src": "4157:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 395,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "head",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 237,
                                  "src": "4157:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4146:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 398,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "prevId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 234,
                              "src": "4146:28:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 399,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 274,
                              "src": "4177:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4146:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 401,
                          "nodeType": "ExpressionStatement",
                          "src": "4146:34:1"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 402,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 272,
                                "src": "4194:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 404,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "head",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 237,
                              "src": "4194:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 405,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 274,
                              "src": "4206:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4194:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 407,
                          "nodeType": "ExpressionStatement",
                          "src": "4194:15:1"
                        }
                      ]
                    }
                  },
                  "id": 480,
                  "nodeType": "IfStatement",
                  "src": "3844:861:1",
                  "trueBody": {
                    "id": 376,
                    "nodeType": "Block",
                    "src": "3894:108:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 364,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "3947:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 366,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "head",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 237,
                            "src": "3947:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 367,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 274,
                            "src": "3959:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3947:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 369,
                        "nodeType": "ExpressionStatement",
                        "src": "3947:15:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 370,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "3976:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 372,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "tail",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 239,
                            "src": "3976:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 373,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 274,
                            "src": "3988:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3976:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "3976:15:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 481,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 272,
                        "src": "4715:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 483,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "4715:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4741:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 484,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 272,
                            "src": "4727:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 485,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "size",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 243,
                          "src": "4727:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1314,
                        "src": "4727:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4727:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4715:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 490,
                  "nodeType": "ExpressionStatement",
                  "src": "4715:28:1"
                }
              ]
            },
            "documentation": null,
            "id": 492,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 272,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2792:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 271,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "2792:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 274,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2811:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 273,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2811:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 276,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2824:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 275,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2824:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 278,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2838:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2838:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 280,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2855:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 279,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2855:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2791:80:1"
            },
            "returnParameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2881:0:1"
            },
            "scope": 1207,
            "src": "2776:1974:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 637,
              "nodeType": "Block",
              "src": "4896:1507:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 501,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 494,
                            "src": "4974:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 502,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "4980:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 500,
                          "name": "contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "4965:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4965:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f742072656d6f7465206e6f6465207468617420646f6573206e6f74206578697374",
                        "id": 504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4998:40:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_228b1b5fc3e31f7c7fdf0c9b9a51be53cd58eeac7f2248195c6f51de6b4bcbe6",
                          "typeString": "literal_string \"cannot remote node that does not exist\""
                        },
                        "value": "cannot remote node that does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_228b1b5fc3e31f7c7fdf0c9b9a51be53cd58eeac7f2248195c6f51de6b4bcbe6",
                          "typeString": "literal_string \"cannot remote node that does not exist\""
                        }
                      ],
                      "id": 499,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "4944:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4944:104:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 506,
                  "nodeType": "ExpressionStatement",
                  "src": "4944:104:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 507,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 494,
                        "src": "5063:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 508,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "5063:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5075:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5063:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 619,
                    "nodeType": "Block",
                    "src": "6155:171:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 603,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "6257:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 605,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "head",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 237,
                            "src": "6257:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6277:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6269:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6269:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6257:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 610,
                        "nodeType": "ExpressionStatement",
                        "src": "6257:22:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 611,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "6293:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 613,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "tail",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 239,
                            "src": "6293:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6313:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6305:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6305:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6293:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 618,
                        "nodeType": "ExpressionStatement",
                        "src": "6293:22:1"
                      }
                    ]
                  },
                  "id": 620,
                  "nodeType": "IfStatement",
                  "src": "5059:1267:1",
                  "trueBody": {
                    "id": 602,
                    "nodeType": "Block",
                    "src": "5078:1071:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 511,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "5149:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 512,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "5156:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 513,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "head",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 237,
                            "src": "5156:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5149:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 538,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 496,
                              "src": "5448:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 539,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 494,
                                "src": "5455:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 540,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tail",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 239,
                              "src": "5455:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5448:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 599,
                            "nodeType": "Block",
                            "src": "5747:392:1",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 565,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5904:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 572,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5904:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 573,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 567,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 494,
                                              "src": "5915:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                                              }
                                            },
                                            "id": 568,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "nodes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 247,
                                            "src": "5915:10:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                            }
                                          },
                                          "id": 570,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 569,
                                            "name": "_id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 496,
                                            "src": "5926:3:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5915:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$235_storage",
                                            "typeString": "struct SortedDoublyLL.Node storage ref"
                                          }
                                        },
                                        "id": 571,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "prevId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 234,
                                        "src": "5915:22:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5904:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 574,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "5904:41:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 575,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5948:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 576,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5948:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 578,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 577,
                                        "name": "_id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 496,
                                        "src": "5959:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5948:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 579,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "5948:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5904:66:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 581,
                                "nodeType": "ExpressionStatement",
                                "src": "5904:66:1"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 582,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "6058:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 589,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "6058:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 590,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 584,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 494,
                                              "src": "6069:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                                              }
                                            },
                                            "id": 585,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "nodes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 247,
                                            "src": "6069:10:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                            }
                                          },
                                          "id": 587,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 586,
                                            "name": "_id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 496,
                                            "src": "6080:3:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "6069:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$235_storage",
                                            "typeString": "struct SortedDoublyLL.Node storage ref"
                                          }
                                        },
                                        "id": 588,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nextId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 232,
                                        "src": "6069:22:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6058:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 591,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "prevId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 234,
                                    "src": "6058:41:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 592,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "6102:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 593,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "6102:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 595,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 594,
                                        "name": "_id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 496,
                                        "src": "6113:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6102:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 596,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "prevId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 234,
                                    "src": "6102:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "6058:66:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 598,
                                "nodeType": "ExpressionStatement",
                                "src": "6058:66:1"
                              }
                            ]
                          },
                          "id": 600,
                          "nodeType": "IfStatement",
                          "src": "5444:695:1",
                          "trueBody": {
                            "id": 564,
                            "nodeType": "Block",
                            "src": "5466:275:1",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 542,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 494,
                                      "src": "5577:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 544,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "tail",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 239,
                                    "src": "5577:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 545,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5589:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 546,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5589:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 548,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 547,
                                        "name": "_id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 496,
                                        "src": "5600:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5589:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 549,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "prevId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 234,
                                    "src": "5589:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5577:34:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 551,
                                "nodeType": "ExpressionStatement",
                                "src": "5577:34:1"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 552,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5685:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 556,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5685:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 557,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 554,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5696:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 555,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "tail",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 239,
                                        "src": "5696:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5685:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 558,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "5685:28:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5724:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5716:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5716:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "5685:41:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 563,
                                "nodeType": "ExpressionStatement",
                                "src": "5685:41:1"
                              }
                            ]
                          }
                        },
                        "id": 601,
                        "nodeType": "IfStatement",
                        "src": "5145:994:1",
                        "trueBody": {
                          "id": 537,
                          "nodeType": "Block",
                          "src": "5167:271:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 515,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 494,
                                    "src": "5274:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 517,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "head",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 237,
                                  "src": "5274:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 518,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 494,
                                        "src": "5286:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 519,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "5286:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 521,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 520,
                                      "name": "_id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 496,
                                      "src": "5297:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5286:15:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 522,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 232,
                                  "src": "5286:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5274:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 524,
                              "nodeType": "ExpressionStatement",
                              "src": "5274:34:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 525,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 494,
                                        "src": "5382:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 529,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "5382:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 530,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 527,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 494,
                                        "src": "5393:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 528,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "head",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 237,
                                      "src": "5393:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5382:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 531,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "prevId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 234,
                                  "src": "5382:28:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 533,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5421:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 532,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5413:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5413:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "5382:41:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 536,
                              "nodeType": "ExpressionStatement",
                              "src": "5382:41:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "6336:22:1",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 621,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 494,
                          "src": "6343:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 622,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "6343:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 624,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 623,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 496,
                        "src": "6354:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6343:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 626,
                  "nodeType": "ExpressionStatement",
                  "src": "6336:22:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 627,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 494,
                        "src": "6368:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 629,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "6368:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6394:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 630,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 494,
                            "src": "6380:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 631,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "size",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 243,
                          "src": "6380:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1290,
                        "src": "6380:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6380:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6368:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 636,
                  "nodeType": "ExpressionStatement",
                  "src": "6368:28:1"
                }
              ]
            },
            "documentation": null,
            "id": 638,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 494,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 638,
                  "src": "4855:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 493,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "4855:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 496,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 638,
                  "src": "4874:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 495,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4874:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4854:32:1"
            },
            "returnParameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4896:0:1"
            },
            "scope": 1207,
            "src": "4839:1564:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 677,
              "nodeType": "Block",
              "src": "6785:372:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 653,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 640,
                            "src": "6863:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 654,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 642,
                            "src": "6869:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 652,
                          "name": "contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "6854:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6854:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420757064617465206e6f6465207468617420646f6573206e6f74206578697374",
                        "id": 656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6887:40:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9e0a74aaf1da13573670263c34cc02e97edbf3186dcc9a8c42fa2d33bc19fb4c",
                          "typeString": "literal_string \"cannot update node that does not exist\""
                        },
                        "value": "cannot update node that does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9e0a74aaf1da13573670263c34cc02e97edbf3186dcc9a8c42fa2d33bc19fb4c",
                          "typeString": "literal_string \"cannot update node that does not exist\""
                        }
                      ],
                      "id": 651,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "6833:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6833:104:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 658,
                  "nodeType": "ExpressionStatement",
                  "src": "6833:104:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 660,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 640,
                        "src": "6992:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 661,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 642,
                        "src": "6998:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 659,
                      "name": "remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 638,
                      "src": "6985:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$__$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address)"
                      }
                    },
                    "id": 662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6985:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 663,
                  "nodeType": "ExpressionStatement",
                  "src": "6985:17:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 664,
                      "name": "_newKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 644,
                      "src": "7017:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7027:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7017:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 676,
                  "nodeType": "IfStatement",
                  "src": "7013:138:1",
                  "trueBody": {
                    "id": 675,
                    "nodeType": "Block",
                    "src": "7030:121:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 668,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 640,
                              "src": "7103:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 669,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 642,
                              "src": "7109:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 670,
                              "name": "_newKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 644,
                              "src": "7114:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 671,
                              "name": "_prevId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 646,
                              "src": "7123:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 672,
                              "name": "_nextId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 648,
                              "src": "7132:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 667,
                            "name": "insert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 492,
                            "src": "7096:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer,address,uint256,address,address)"
                            }
                          },
                          "id": 673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7096:44:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 674,
                        "nodeType": "ExpressionStatement",
                        "src": "7096:44:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 678,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 640,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6693:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 639,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "6693:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 642,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6712:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6712:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 644,
                  "name": "_newKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6725:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6725:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 646,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6742:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6742:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 648,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6759:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6759:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6692:83:1"
            },
            "returnParameters": {
              "id": 650,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6785:0:1"
            },
            "scope": 1207,
            "src": "6674:483:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 695,
              "nodeType": "Block",
              "src": "7352:130:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 687,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 680,
                            "src": "7452:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 688,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nodes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 247,
                          "src": "7452:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                            "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                          }
                        },
                        "id": 690,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 689,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 682,
                          "src": "7463:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7452:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$235_storage",
                          "typeString": "struct SortedDoublyLL.Node storage ref"
                        }
                      },
                      "id": 691,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 230,
                      "src": "7452:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 692,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7474:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7452:23:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 686,
                  "id": 694,
                  "nodeType": "Return",
                  "src": "7445:30:1"
                }
              ]
            },
            "documentation": null,
            "id": 696,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 680,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 696,
                  "src": "7291:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 679,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7291:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 682,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 696,
                  "src": "7310:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7310:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7290:32:1"
            },
            "returnParameters": {
              "id": 686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 685,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 696,
                  "src": "7346:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 684,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7346:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7345:6:1"
            },
            "scope": 1207,
            "src": "7273:209:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 709,
              "nodeType": "Block",
              "src": "7606:49:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 703,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 698,
                        "src": "7623:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 704,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "7623:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 705,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 698,
                        "src": "7636:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 706,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 241,
                      "src": "7636:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7623:25:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 702,
                  "id": 708,
                  "nodeType": "Return",
                  "src": "7616:32:1"
                }
              ]
            },
            "documentation": null,
            "id": 710,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isFull",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 698,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "7558:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 697,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7558:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7557:19:1"
            },
            "returnParameters": {
              "id": 702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 701,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "7600:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7600:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7599:6:1"
            },
            "scope": 1207,
            "src": "7542:113:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 722,
              "nodeType": "Block",
              "src": "7781:38:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 717,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 712,
                        "src": "7798:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 718,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "7798:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 719,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7811:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7798:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 716,
                  "id": 721,
                  "nodeType": "Return",
                  "src": "7791:21:1"
                }
              ]
            },
            "documentation": null,
            "id": 723,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEmpty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 712,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 723,
                  "src": "7733:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 711,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7733:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7732:19:1"
            },
            "returnParameters": {
              "id": 716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 715,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 723,
                  "src": "7775:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 714,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7775:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7774:6:1"
            },
            "scope": 1207,
            "src": "7716:103:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 733,
              "nodeType": "Block",
              "src": "7957:33:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 730,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 725,
                      "src": "7974:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 731,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "size",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 243,
                    "src": "7974:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 729,
                  "id": 732,
                  "nodeType": "Return",
                  "src": "7967:16:1"
                }
              ]
            },
            "documentation": null,
            "id": 734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 725,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 734,
                  "src": "7906:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 724,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7906:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7905:19:1"
            },
            "returnParameters": {
              "id": 729,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 728,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 734,
                  "src": "7948:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 727,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7948:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7947:9:1"
            },
            "scope": 1207,
            "src": "7889:101:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 744,
              "nodeType": "Block",
              "src": "8131:36:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 741,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 736,
                      "src": "8148:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 742,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "maxSize",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 241,
                    "src": "8148:12:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 740,
                  "id": 743,
                  "nodeType": "Return",
                  "src": "8141:19:1"
                }
              ]
            },
            "documentation": null,
            "id": 745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 736,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 745,
                  "src": "8080:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 735,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8080:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8079:19:1"
            },
            "returnParameters": {
              "id": 740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 739,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 745,
                  "src": "8122:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8122:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8121:9:1"
            },
            "scope": 1207,
            "src": "8060:107:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 760,
              "nodeType": "Block",
              "src": "8346:43:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 754,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 747,
                          "src": "8363:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 755,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "8363:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 757,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 756,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 749,
                        "src": "8374:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8363:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 758,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "key",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 230,
                    "src": "8363:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 753,
                  "id": 759,
                  "nodeType": "Return",
                  "src": "8356:26:1"
                }
              ]
            },
            "documentation": null,
            "id": 761,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 747,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 761,
                  "src": "8282:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 746,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8282:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 749,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 761,
                  "src": "8301:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 748,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8301:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8281:32:1"
            },
            "returnParameters": {
              "id": 753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 752,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 761,
                  "src": "8337:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 751,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8337:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8336:9:1"
            },
            "scope": 1207,
            "src": "8266:123:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 771,
              "nodeType": "Block",
              "src": "8554:33:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 768,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 763,
                      "src": "8571:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 769,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "head",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 237,
                    "src": "8571:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 767,
                  "id": 770,
                  "nodeType": "Return",
                  "src": "8564:16:1"
                }
              ]
            },
            "documentation": null,
            "id": 772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFirst",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 763,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 772,
                  "src": "8503:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 762,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8503:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8502:19:1"
            },
            "returnParameters": {
              "id": 767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 766,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 772,
                  "src": "8545:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 765,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8545:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8544:9:1"
            },
            "scope": 1207,
            "src": "8485:102:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 782,
              "nodeType": "Block",
              "src": "8751:33:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 779,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 774,
                      "src": "8768:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 780,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "tail",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 239,
                    "src": "8768:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 778,
                  "id": 781,
                  "nodeType": "Return",
                  "src": "8761:16:1"
                }
              ]
            },
            "documentation": null,
            "id": 783,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLast",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 774,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 783,
                  "src": "8700:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 773,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8700:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8699:19:1"
            },
            "returnParameters": {
              "id": 778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 777,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 783,
                  "src": "8742:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8742:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8741:9:1"
            },
            "scope": 1207,
            "src": "8683:101:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 798,
              "nodeType": "Block",
              "src": "8998:46:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 792,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 785,
                          "src": "9015:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 793,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "9015:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 795,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 794,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 787,
                        "src": "9026:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9015:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 796,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "nextId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 232,
                    "src": "9015:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 791,
                  "id": 797,
                  "nodeType": "Return",
                  "src": "9008:29:1"
                }
              ]
            },
            "documentation": null,
            "id": 799,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 785,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "8934:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 784,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8934:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 787,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "8953:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8953:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8933:32:1"
            },
            "returnParameters": {
              "id": 791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 790,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "8989:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8989:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8988:9:1"
            },
            "scope": 1207,
            "src": "8917:127:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 814,
              "nodeType": "Block",
              "src": "9261:46:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 808,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 801,
                          "src": "9278:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 809,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "9278:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 811,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 810,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "9289:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9278:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 812,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "prevId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 234,
                    "src": "9278:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 807,
                  "id": 813,
                  "nodeType": "Return",
                  "src": "9271:29:1"
                }
              ]
            },
            "documentation": null,
            "id": 815,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPrev",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 804,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 801,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 815,
                  "src": "9197:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 800,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "9197:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 803,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 815,
                  "src": "9216:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9216:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9196:32:1"
            },
            "returnParameters": {
              "id": 807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 806,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 815,
                  "src": "9252:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 805,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9252:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9251:9:1"
            },
            "scope": 1207,
            "src": "9180:127:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 910,
              "nodeType": "Block",
              "src": "9709:905:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 828,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 821,
                        "src": "9723:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9742:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9734:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9734:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9723:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 833,
                        "name": "_nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 823,
                        "src": "9748:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9767:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9759:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9759:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9748:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9723:46:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 848,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 844,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 821,
                        "src": "9904:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9923:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9915:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9915:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9904:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 863,
                          "name": "_nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 823,
                          "src": "10121:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10140:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10132:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10132:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "10121:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 906,
                        "nodeType": "Block",
                        "src": "10334:274:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 888,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 882,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 817,
                                          "src": "10490:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 883,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "10490:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 885,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 884,
                                        "name": "_prevId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 821,
                                        "src": "10501:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10490:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 886,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "10490:26:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 887,
                                    "name": "_nextId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 823,
                                    "src": "10520:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "10490:37:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 889,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 817,
                                          "src": "10531:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 890,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "10531:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 892,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 891,
                                        "name": "_prevId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 821,
                                        "src": "10542:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10531:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 893,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "key",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 230,
                                    "src": "10531:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 894,
                                    "name": "_key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 819,
                                    "src": "10558:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10531:31:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "10490:72:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 897,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 819,
                                  "src": "10566:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 898,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 817,
                                        "src": "10574:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 899,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "10574:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 901,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 900,
                                      "name": "_nextId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 823,
                                      "src": "10585:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10574:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 902,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "key",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 230,
                                  "src": "10574:23:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10566:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10490:107:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 827,
                            "id": 905,
                            "nodeType": "Return",
                            "src": "10483:114:1"
                          }
                        ]
                      },
                      "id": 907,
                      "nodeType": "IfStatement",
                      "src": "10117:491:1",
                      "trueBody": {
                        "id": 881,
                        "nodeType": "Block",
                        "src": "10144:184:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 868,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 817,
                                    "src": "10262:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 869,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tail",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 239,
                                  "src": "10262:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 870,
                                  "name": "_prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 821,
                                  "src": "10275:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10262:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 872,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 819,
                                  "src": "10286:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 873,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 817,
                                        "src": "10294:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 874,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "10294:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 876,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 875,
                                      "name": "_prevId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 821,
                                      "src": "10305:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10294:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 877,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "key",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 230,
                                  "src": "10294:23:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10286:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10262:55:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 827,
                            "id": 880,
                            "nodeType": "Return",
                            "src": "10255:62:1"
                          }
                        ]
                      }
                    },
                    "id": 908,
                    "nodeType": "IfStatement",
                    "src": "9900:708:1",
                    "trueBody": {
                      "id": 862,
                      "nodeType": "Block",
                      "src": "9927:184:1",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 849,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 817,
                                  "src": "10045:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 850,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "head",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 237,
                                "src": "10045:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 851,
                                "name": "_nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 823,
                                "src": "10058:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10045:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 853,
                                "name": "_key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 819,
                                "src": "10069:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 854,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 817,
                                      "src": "10077:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 855,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "10077:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 857,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 856,
                                    "name": "_nextId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 823,
                                    "src": "10088:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10077:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 858,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "key",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 230,
                                "src": "10077:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10069:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10045:55:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "functionReturnParameters": 827,
                          "id": 861,
                          "nodeType": "Return",
                          "src": "10038:62:1"
                        }
                      ]
                    }
                  },
                  "id": 909,
                  "nodeType": "IfStatement",
                  "src": "9719:889:1",
                  "trueBody": {
                    "id": 843,
                    "nodeType": "Block",
                    "src": "9771:123:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 840,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "9878:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            ],
                            "id": 839,
                            "name": "isEmpty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 723,
                            "src": "9870:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (bool)"
                            }
                          },
                          "id": 841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9870:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 827,
                        "id": 842,
                        "nodeType": "Return",
                        "src": "9863:20:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 911,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validInsertPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 817,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9613:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 816,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "9613:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 819,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9632:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 818,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9632:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 821,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9646:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 820,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9646:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 823,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9663:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 822,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9663:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9612:67:1"
            },
            "returnParameters": {
              "id": 827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 826,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9703:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 825,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9703:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9702:6:1"
            },
            "scope": 1207,
            "src": "9584:1030:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 991,
              "nodeType": "Block",
              "src": "10936:631:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 924,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 913,
                          "src": "11036:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 925,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "head",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 237,
                        "src": "11036:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 926,
                        "name": "_startId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 917,
                        "src": "11049:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "11036:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 934,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 928,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 915,
                        "src": "11061:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 929,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 913,
                              "src": "11069:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 930,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nodes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 247,
                            "src": "11069:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                            }
                          },
                          "id": 932,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 931,
                            "name": "_startId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "11080:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11069:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$235_storage",
                            "typeString": "struct SortedDoublyLL.Node storage ref"
                          }
                        },
                        "id": 933,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 230,
                        "src": "11069:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "11061:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11036:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 943,
                  "nodeType": "IfStatement",
                  "src": "11032:117:1",
                  "trueBody": {
                    "id": 942,
                    "nodeType": "Block",
                    "src": "11095:54:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11125:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11117:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11117:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 939,
                              "name": "_startId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "11129:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 940,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11116:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_$",
                            "typeString": "tuple(address payable,address)"
                          }
                        },
                        "functionReturnParameters": 923,
                        "id": 941,
                        "nodeType": "Return",
                        "src": "11109:29:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    945
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 945,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 991,
                      "src": "11159:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 944,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11159:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 947,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 946,
                    "name": "_startId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 917,
                    "src": "11176:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11159:25:1"
                },
                {
                  "assignments": [
                    949
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 949,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 991,
                      "src": "11194:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 948,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11194:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 955,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 950,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 913,
                          "src": "11211:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 951,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "11211:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 953,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 952,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "11222:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "11211:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 954,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "nextId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 232,
                    "src": "11211:25:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11194:42:1"
                },
                {
                  "body": {
                    "id": 985,
                    "nodeType": "Block",
                    "src": "11420:107:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 969,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 945,
                            "src": "11434:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 970,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 913,
                                  "src": "11443:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 971,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "11443:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 973,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 972,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 945,
                                "src": "11454:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11443:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 232,
                            "src": "11443:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11434:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 976,
                        "nodeType": "ExpressionStatement",
                        "src": "11434:34:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 977,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 949,
                            "src": "11482:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 978,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 913,
                                  "src": "11491:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 979,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "11491:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 981,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 980,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 945,
                                "src": "11502:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11491:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 982,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 232,
                            "src": "11491:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11482:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 984,
                        "nodeType": "ExpressionStatement",
                        "src": "11482:34:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 956,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "11346:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11364:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11356:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11356:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "11346:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "11370:48:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 962,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 913,
                            "src": "11391:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 963,
                            "name": "_key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 915,
                            "src": "11397:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 964,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 945,
                            "src": "11403:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 965,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 949,
                            "src": "11411:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 961,
                          "name": "validInsertPosition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "11371:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (bool)"
                          }
                        },
                        "id": 966,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11371:47:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11346:72:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 986,
                  "nodeType": "WhileStatement",
                  "src": "11339:188:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 987,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "11545:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 988,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 949,
                        "src": "11553:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 989,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "11544:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "functionReturnParameters": 923,
                  "id": 990,
                  "nodeType": "Return",
                  "src": "11537:23:1"
                }
              ]
            },
            "documentation": null,
            "id": 992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "descendList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 913,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10844:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 912,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "10844:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 915,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10863:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 914,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10863:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 917,
                  "name": "_startId",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10877:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10877:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10843:51:1"
            },
            "returnParameters": {
              "id": 923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 920,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10918:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10918:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 922,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10927:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10927:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10917:18:1"
            },
            "scope": 1207,
            "src": "10823:744:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1072,
              "nodeType": "Block",
              "src": "11888:629:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1005,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 994,
                          "src": "11987:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 1006,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 239,
                        "src": "11987:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1007,
                        "name": "_startId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 998,
                        "src": "12000:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "11987:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1009,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 996,
                        "src": "12012:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1010,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 994,
                              "src": "12020:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 1011,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nodes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 247,
                            "src": "12020:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                            }
                          },
                          "id": 1013,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1012,
                            "name": "_startId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 998,
                            "src": "12031:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12020:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$235_storage",
                            "typeString": "struct SortedDoublyLL.Node storage ref"
                          }
                        },
                        "id": 1014,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 230,
                        "src": "12020:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12012:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11987:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1024,
                  "nodeType": "IfStatement",
                  "src": "11983:117:1",
                  "trueBody": {
                    "id": 1023,
                    "nodeType": "Block",
                    "src": "12046:54:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1017,
                              "name": "_startId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 998,
                              "src": "12068:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12086:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12078:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12078:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "id": 1021,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12067:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_payable_$",
                            "typeString": "tuple(address,address payable)"
                          }
                        },
                        "functionReturnParameters": 1004,
                        "id": 1022,
                        "nodeType": "Return",
                        "src": "12060:29:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1026
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1026,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1072,
                      "src": "12110:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1025,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12110:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1028,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1027,
                    "name": "_startId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 998,
                    "src": "12127:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12110:25:1"
                },
                {
                  "assignments": [
                    1030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1030,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1072,
                      "src": "12145:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1029,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12145:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1036,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1031,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 994,
                          "src": "12162:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 1032,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "12162:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 1034,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1033,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1026,
                        "src": "12173:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "12162:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 1035,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "prevId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 234,
                    "src": "12162:25:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12145:42:1"
                },
                {
                  "body": {
                    "id": 1066,
                    "nodeType": "Block",
                    "src": "12370:107:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1050,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1026,
                            "src": "12384:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1051,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 994,
                                  "src": "12393:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 1052,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "12393:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 1054,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1053,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1026,
                                "src": "12404:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12393:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 1055,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "prevId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 234,
                            "src": "12393:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12384:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1057,
                        "nodeType": "ExpressionStatement",
                        "src": "12384:34:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1058,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1030,
                            "src": "12432:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1059,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 994,
                                  "src": "12441:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 1060,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "12441:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 1062,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1061,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1026,
                                "src": "12452:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12441:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 1063,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "prevId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 234,
                            "src": "12441:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12432:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1065,
                        "nodeType": "ExpressionStatement",
                        "src": "12432:34:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1041,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1037,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1026,
                        "src": "12296:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12314:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12306:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12306:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "12296:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "12320:48:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1043,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 994,
                            "src": "12341:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1044,
                            "name": "_key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 996,
                            "src": "12347:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1045,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1030,
                            "src": "12353:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1046,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1026,
                            "src": "12361:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1042,
                          "name": "validInsertPosition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "12321:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (bool)"
                          }
                        },
                        "id": 1047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12321:47:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12296:72:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1067,
                  "nodeType": "WhileStatement",
                  "src": "12289:188:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 1068,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1030,
                        "src": "12495:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1069,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1026,
                        "src": "12503:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 1070,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12494:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "functionReturnParameters": 1004,
                  "id": 1071,
                  "nodeType": "Return",
                  "src": "12487:23:1"
                }
              ]
            },
            "documentation": null,
            "id": 1073,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ascendList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 994,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11796:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 993,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "11796:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 996,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11815:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 995,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11815:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 998,
                  "name": "_startId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11829:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11829:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11795:51:1"
            },
            "returnParameters": {
              "id": 1004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1001,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11870:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1000,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11870:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1003,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11879:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11879:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11869:18:1"
            },
            "scope": 1207,
            "src": "11776:741:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1205,
              "nodeType": "Block",
              "src": "12903:1251:1",
              "statements": [
                {
                  "assignments": [
                    1089
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1089,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1205,
                      "src": "12913:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1088,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12913:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1091,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1090,
                    "name": "_prevId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1079,
                    "src": "12930:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12913:24:1"
                },
                {
                  "assignments": [
                    1093
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1093,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1205,
                      "src": "12947:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1092,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12947:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1095,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1094,
                    "name": "_nextId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1081,
                    "src": "12964:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12947:24:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1096,
                      "name": "prevId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1089,
                      "src": "12986:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13004:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12996:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12996:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "12986:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1123,
                  "nodeType": "IfStatement",
                  "src": "12982:259:1",
                  "trueBody": {
                    "id": 1122,
                    "nodeType": "Block",
                    "src": "13008:233:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "13026:23:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1102,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "13036:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1103,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "13042:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1101,
                                "name": "contains",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 696,
                                "src": "13027:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13027:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1106,
                              "name": "_key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "13053:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1107,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1075,
                                    "src": "13060:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 1108,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "13060:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 1110,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1109,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "13071:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13060:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 1111,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 230,
                              "src": "13060:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13053:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13026:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1121,
                        "nodeType": "IfStatement",
                        "src": "13022:209:1",
                        "trueBody": {
                          "id": 1120,
                          "nodeType": "Block",
                          "src": "13084:147:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1114,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "13197:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13214:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1115,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13206:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13206:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13197:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1119,
                              "nodeType": "ExpressionStatement",
                              "src": "13197:19:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1124,
                      "name": "nextId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1093,
                      "src": "13255:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13273:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13265:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13265:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "13255:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1151,
                  "nodeType": "IfStatement",
                  "src": "13251:258:1",
                  "trueBody": {
                    "id": 1150,
                    "nodeType": "Block",
                    "src": "13277:232:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "13295:23:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1130,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "13305:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1131,
                                  "name": "nextId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1093,
                                  "src": "13311:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1129,
                                "name": "contains",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 696,
                                "src": "13296:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13296:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1134,
                              "name": "_key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "13322:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1135,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1075,
                                    "src": "13329:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 1136,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "13329:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 1138,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1137,
                                  "name": "nextId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1093,
                                  "src": "13340:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13329:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 1139,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 230,
                              "src": "13329:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13322:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13295:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1149,
                        "nodeType": "IfStatement",
                        "src": "13291:208:1",
                        "trueBody": {
                          "id": 1148,
                          "nodeType": "Block",
                          "src": "13353:146:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1142,
                                  "name": "nextId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1093,
                                  "src": "13465:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13482:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13474:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13474:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13465:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1147,
                              "nodeType": "ExpressionStatement",
                              "src": "13465:19:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1152,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1089,
                        "src": "13523:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13541:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13533:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13533:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "13523:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1157,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1093,
                        "src": "13547:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13565:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13557:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13557:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "13547:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13523:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1171,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1089,
                        "src": "13702:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13720:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13712:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13712:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "13702:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1183,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1093,
                          "src": "13869:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1185,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13887:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13879:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 1186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13879:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "13869:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1201,
                        "nodeType": "Block",
                        "src": "14034:114:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1196,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "14118:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1197,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1077,
                                  "src": "14124:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1198,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "14130:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1195,
                                "name": "descendList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 992,
                                "src": "14106:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                                }
                              },
                              "id": 1199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14106:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "functionReturnParameters": 1087,
                            "id": 1200,
                            "nodeType": "Return",
                            "src": "14099:38:1"
                          }
                        ]
                      },
                      "id": 1202,
                      "nodeType": "IfStatement",
                      "src": "13865:283:1",
                      "trueBody": {
                        "id": 1194,
                        "nodeType": "Block",
                        "src": "13891:137:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1189,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "13998:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1190,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1077,
                                  "src": "14004:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1191,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "14010:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1188,
                                "name": "descendList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 992,
                                "src": "13986:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                                }
                              },
                              "id": 1192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13986:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "functionReturnParameters": 1087,
                            "id": 1193,
                            "nodeType": "Return",
                            "src": "13979:38:1"
                          }
                        ]
                      }
                    },
                    "id": 1203,
                    "nodeType": "IfStatement",
                    "src": "13698:450:1",
                    "trueBody": {
                      "id": 1182,
                      "nodeType": "Block",
                      "src": "13724:135:1",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1177,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1075,
                                "src": "13829:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "_key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1077,
                                "src": "13835:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1179,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1093,
                                "src": "13841:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1176,
                              "name": "ascendList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "13818:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                                "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                              }
                            },
                            "id": 1180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13818:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "functionReturnParameters": 1087,
                          "id": 1181,
                          "nodeType": "Return",
                          "src": "13811:37:1"
                        }
                      ]
                    }
                  },
                  "id": 1204,
                  "nodeType": "IfStatement",
                  "src": "13519:629:1",
                  "trueBody": {
                    "id": 1170,
                    "nodeType": "Block",
                    "src": "13569:123:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1164,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "13659:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1165,
                              "name": "_key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "13665:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1166,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1075,
                                "src": "13671:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 1167,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "head",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 237,
                              "src": "13671:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1163,
                            "name": "descendList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 992,
                            "src": "13647:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                            }
                          },
                          "id": 1168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13647:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "functionReturnParameters": 1087,
                        "id": 1169,
                        "nodeType": "Return",
                        "src": "13640:41:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1206,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "findInsertPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1075,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12795:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1074,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "12795:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1077,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12814:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1076,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12814:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1079,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12828:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1078,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12828:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1081,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12845:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1080,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12845:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12794:67:1"
            },
            "returnParameters": {
              "id": 1087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1084,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12885:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1083,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12885:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1086,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12894:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1085,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12894:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12884:18:1"
            },
            "scope": 1207,
            "src": "12767:1387:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 1208,
        "src": "1251:12905:1"
      }
    ],
    "src": "0:14156:1"
  },
  "legacyAST": {
    "absolutePath": "/Users/yondonfu/Development/livepeer/sorted-doubly-ll/packages/sorted-doubly-ll/contracts/SortedDoublyLL.sol",
    "exportedSymbols": {
      "SortedDoublyLL": [
        1207
      ]
    },
    "id": 1208,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 224,
        "literals": [
          "solidity",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:22:1"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 225,
        "nodeType": "ImportDirective",
        "scope": 1208,
        "sourceUnit": 1336,
        "src": "24:59:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1207,
        "linearizedBaseContracts": [
          1207
        ],
        "name": "SortedDoublyLL",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 228,
            "libraryName": {
              "contractScope": null,
              "id": 226,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1335,
              "src": "1286:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1335",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1280:27:1",
            "typeName": {
              "id": 227,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1299:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "SortedDoublyLL.Node",
            "id": 235,
            "members": [
              {
                "constant": false,
                "id": 230,
                "name": "key",
                "nodeType": "VariableDeclaration",
                "scope": 235,
                "src": "1377:11:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 229,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1377:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 232,
                "name": "nextId",
                "nodeType": "VariableDeclaration",
                "scope": 235,
                "src": "1449:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 231,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1449:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 234,
                "name": "prevId",
                "nodeType": "VariableDeclaration",
                "scope": 235,
                "src": "1535:14:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 233,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1535:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Node",
            "nodeType": "StructDefinition",
            "scope": 1207,
            "src": "1355:266:1",
            "visibility": "public"
          },
          {
            "canonicalName": "SortedDoublyLL.Data",
            "id": 248,
            "members": [
              {
                "constant": false,
                "id": 237,
                "name": "head",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1681:12:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 236,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1681:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 239,
                "name": "tail",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1794:12:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 238,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1794:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 241,
                "name": "maxSize",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1908:15:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 240,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1908:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 243,
                "name": "size",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "1981:12:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 242,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1981:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 247,
                "name": "nodes",
                "nodeType": "VariableDeclaration",
                "scope": 248,
                "src": "2054:31:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                  "typeString": "mapping(address => struct SortedDoublyLL.Node)"
                },
                "typeName": {
                  "id": 246,
                  "keyType": {
                    "id": 244,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2063:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "2054:25:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                    "typeString": "mapping(address => struct SortedDoublyLL.Node)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 245,
                    "name": "Node",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 235,
                    "src": "2074:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Node_$235_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Node"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Data",
            "nodeType": "StructDefinition",
            "scope": 1207,
            "src": "1659:494:1",
            "visibility": "public"
          },
          {
            "body": {
              "id": 269,
              "nodeType": "Block",
              "src": "2315:219:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 256,
                          "name": "_size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 252,
                          "src": "2404:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 257,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 250,
                            "src": "2412:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 258,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maxSize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 241,
                          "src": "2412:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2404:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6577206d61782073697a65206d7573742062652067726561746572207468616e206f6c64206d61782073697a65",
                        "id": 260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2438:48:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_30180cb1a055b4f426da570ff72eaa2227ac83f4e78a0723078bb5e5c76e86a9",
                          "typeString": "literal_string \"new max size must be greater than old max size\""
                        },
                        "value": "new max size must be greater than old max size"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_30180cb1a055b4f426da570ff72eaa2227ac83f4e78a0723078bb5e5c76e86a9",
                          "typeString": "literal_string \"new max size must be greater than old max size\""
                        }
                      ],
                      "id": 255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "2383:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2383:113:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 262,
                  "nodeType": "ExpressionStatement",
                  "src": "2383:113:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 263,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 250,
                        "src": "2507:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 265,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "maxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 241,
                      "src": "2507:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 266,
                      "name": "_size",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 252,
                      "src": "2522:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2507:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 268,
                  "nodeType": "ExpressionStatement",
                  "src": "2507:20:1"
                }
              ]
            },
            "documentation": null,
            "id": 270,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 250,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 270,
                  "src": "2272:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 249,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "2272:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 252,
                  "name": "_size",
                  "nodeType": "VariableDeclaration",
                  "scope": 270,
                  "src": "2291:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 251,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2291:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2271:34:1"
            },
            "returnParameters": {
              "id": 254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2315:0:1"
            },
            "scope": 1207,
            "src": "2252:282:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 491,
              "nodeType": "Block",
              "src": "2881:1869:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2945:13:1",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 285,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "2953:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            ],
                            "id": 284,
                            "name": "isFull",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 710,
                            "src": "2946:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (bool)"
                            }
                          },
                          "id": 286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2946:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e7365727420696e746f20612066756c6c206c697374",
                        "id": 288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2972:32:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c717684577a451051cd65ab3f9ba5a50cc9ef38655a6cc00364245ec33eaec6e",
                          "typeString": "literal_string \"cannot insert into a full list\""
                        },
                        "value": "cannot insert into a full list"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c717684577a451051cd65ab3f9ba5a50cc9ef38655a6cc00364245ec33eaec6e",
                          "typeString": "literal_string \"cannot insert into a full list\""
                        }
                      ],
                      "id": 283,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "2924:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2924:90:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 290,
                  "nodeType": "ExpressionStatement",
                  "src": "2924:90:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3091:20:1",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 293,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "3101:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 294,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 274,
                              "src": "3107:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 292,
                            "name": "contains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "3092:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                            }
                          },
                          "id": 295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3092:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e73657274206e6f6465207468617420616c726561647920657869737473",
                        "id": 297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3125:40:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ffcfe52afc7805b93498508456cf152482630a9e40c85ebae9fa3fdf5dc6849f",
                          "typeString": "literal_string \"cannot insert node that already exists\""
                        },
                        "value": "cannot insert node that already exists"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ffcfe52afc7805b93498508456cf152482630a9e40c85ebae9fa3fdf5dc6849f",
                          "typeString": "literal_string \"cannot insert node that already exists\""
                        }
                      ],
                      "id": 291,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "3070:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 298,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3070:105:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 299,
                  "nodeType": "ExpressionStatement",
                  "src": "3070:105:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 301,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 274,
                          "src": "3242:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3257:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3249:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3249:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "3242:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e73657274206e6f646520776974682061206e756c6c206964",
                        "id": 306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3273:35:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f95715ec28e095ea431e617f0c6f10badba370c12d4f017afba6acd890bad45",
                          "typeString": "literal_string \"cannot insert node with a null id\""
                        },
                        "value": "cannot insert node with a null id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f95715ec28e095ea431e617f0c6f10badba370c12d4f017afba6acd890bad45",
                          "typeString": "literal_string \"cannot insert node with a null id\""
                        }
                      ],
                      "id": 300,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "3221:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3221:97:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 308,
                  "nodeType": "ExpressionStatement",
                  "src": "3221:97:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 310,
                          "name": "_key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 276,
                          "src": "3381:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3388:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3381:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420696e73657274206e6f64652077697468207a65726f206b6579",
                        "id": 313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3403:34:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ceacbcd86fbac45605bb4ae8e2f9c00fc444955833c63d0676948eab292ac109",
                          "typeString": "literal_string \"cannot insert node with zero key\""
                        },
                        "value": "cannot insert node with zero key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ceacbcd86fbac45605bb4ae8e2f9c00fc444955833c63d0676948eab292ac109",
                          "typeString": "literal_string \"cannot insert node with zero key\""
                        }
                      ],
                      "id": 309,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "3360:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3360:87:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 315,
                  "nodeType": "ExpressionStatement",
                  "src": "3360:87:1"
                },
                {
                  "assignments": [
                    317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 317,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 491,
                      "src": "3458:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 316,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3458:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 319,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 318,
                    "name": "_prevId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 278,
                    "src": "3475:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3458:24:1"
                },
                {
                  "assignments": [
                    321
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 321,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 491,
                      "src": "3492:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 320,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3492:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 323,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 322,
                    "name": "_nextId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 280,
                    "src": "3509:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3492:24:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "3531:48:1",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 325,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 272,
                          "src": "3552:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 326,
                          "name": "_key",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 276,
                          "src": "3558:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 327,
                          "name": "prevId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 317,
                          "src": "3564:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 328,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 321,
                          "src": "3572:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 324,
                        "name": "validInsertPosition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "3532:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (bool)"
                        }
                      },
                      "id": 329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3532:47:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 343,
                  "nodeType": "IfStatement",
                  "src": "3527:270:1",
                  "trueBody": {
                    "id": 342,
                    "nodeType": "Block",
                    "src": "3581:216:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 331,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 317,
                                "src": "3722:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 332,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 321,
                                "src": "3730:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 333,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3721:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 335,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 272,
                                "src": "3759:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 336,
                                "name": "_key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 276,
                                "src": "3765:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 337,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 317,
                                "src": "3771:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 338,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 321,
                                "src": "3779:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 334,
                              "name": "findInsertPosition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1206,
                              "src": "3740:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (address,address)"
                              }
                            },
                            "id": 339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3740:46:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "src": "3721:65:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 341,
                        "nodeType": "ExpressionStatement",
                        "src": "3721:65:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 344,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 272,
                            "src": "3807:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 347,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nodes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 247,
                          "src": "3807:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                            "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                          }
                        },
                        "id": 348,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 346,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 274,
                          "src": "3818:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3807:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$235_storage",
                          "typeString": "struct SortedDoublyLL.Node storage ref"
                        }
                      },
                      "id": 349,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 230,
                      "src": "3807:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 350,
                      "name": "_key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 276,
                      "src": "3829:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3807:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 352,
                  "nodeType": "ExpressionStatement",
                  "src": "3807:26:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 357,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 353,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 317,
                        "src": "3848:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3866:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3858:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3858:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3848:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 362,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 358,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 321,
                        "src": "3872:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3890:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3882:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3882:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3872:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3848:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 377,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 317,
                        "src": "4012:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4030:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4022:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4022:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "4012:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 409,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 321,
                          "src": "4230:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4248:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4240:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4240:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4230:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 477,
                        "nodeType": "Block",
                        "src": "4443:262:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 441,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4528:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 444,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4528:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 445,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 443,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 274,
                                    "src": "4539:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4528:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 446,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "nextId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 232,
                                "src": "4528:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 447,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 321,
                                "src": "4553:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4528:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 449,
                            "nodeType": "ExpressionStatement",
                            "src": "4528:31:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 450,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4573:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 453,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4573:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 454,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 452,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 274,
                                    "src": "4584:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4573:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 455,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "prevId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 234,
                                "src": "4573:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 456,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 317,
                                "src": "4598:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4573:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 458,
                            "nodeType": "ExpressionStatement",
                            "src": "4573:31:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 459,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4618:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 462,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4618:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 463,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 461,
                                    "name": "prevId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 317,
                                    "src": "4629:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4618:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 464,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "nextId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 232,
                                "src": "4618:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 465,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4646:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4618:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 467,
                            "nodeType": "ExpressionStatement",
                            "src": "4618:31:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 468,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4663:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 471,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4663:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 472,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 470,
                                    "name": "nextId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 321,
                                    "src": "4674:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4663:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 473,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "prevId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 234,
                                "src": "4663:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 474,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4691:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4663:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 476,
                            "nodeType": "ExpressionStatement",
                            "src": "4663:31:1"
                          }
                        ]
                      },
                      "id": 478,
                      "nodeType": "IfStatement",
                      "src": "4226:479:1",
                      "trueBody": {
                        "id": 440,
                        "nodeType": "Block",
                        "src": "4252:185:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 414,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4315:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 417,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4315:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 418,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 416,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 274,
                                    "src": "4326:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4315:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 419,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "prevId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 234,
                                "src": "4315:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 420,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 272,
                                  "src": "4340:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 421,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tail",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 239,
                                "src": "4340:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4315:34:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 423,
                            "nodeType": "ExpressionStatement",
                            "src": "4315:34:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 424,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4363:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 428,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "4363:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 429,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 426,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 272,
                                      "src": "4374:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 427,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tail",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 239,
                                    "src": "4374:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4363:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 430,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "nextId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 232,
                                "src": "4363:28:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 431,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4394:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4363:34:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 433,
                            "nodeType": "ExpressionStatement",
                            "src": "4363:34:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 434,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 272,
                                  "src": "4411:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 436,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "tail",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 239,
                                "src": "4411:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 437,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "4423:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4411:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 439,
                            "nodeType": "ExpressionStatement",
                            "src": "4411:15:1"
                          }
                        ]
                      }
                    },
                    "id": 479,
                    "nodeType": "IfStatement",
                    "src": "4008:697:1",
                    "trueBody": {
                      "id": 408,
                      "nodeType": "Block",
                      "src": "4034:186:1",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 382,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 272,
                                    "src": "4098:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 385,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "4098:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 386,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 384,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 274,
                                  "src": "4109:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4098:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 387,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "nextId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 232,
                              "src": "4098:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 388,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 272,
                                "src": "4123:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 389,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "head",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 237,
                              "src": "4123:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4098:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 391,
                          "nodeType": "ExpressionStatement",
                          "src": "4098:34:1"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 392,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 272,
                                    "src": "4146:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 396,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "4146:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 397,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 394,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 272,
                                    "src": "4157:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 395,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "head",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 237,
                                  "src": "4157:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4146:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 398,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "prevId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 234,
                              "src": "4146:28:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 399,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 274,
                              "src": "4177:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4146:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 401,
                          "nodeType": "ExpressionStatement",
                          "src": "4146:34:1"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 402,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 272,
                                "src": "4194:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 404,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "head",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 237,
                              "src": "4194:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "id": 405,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 274,
                              "src": "4206:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4194:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 407,
                          "nodeType": "ExpressionStatement",
                          "src": "4194:15:1"
                        }
                      ]
                    }
                  },
                  "id": 480,
                  "nodeType": "IfStatement",
                  "src": "3844:861:1",
                  "trueBody": {
                    "id": 376,
                    "nodeType": "Block",
                    "src": "3894:108:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 364,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "3947:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 366,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "head",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 237,
                            "src": "3947:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 367,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 274,
                            "src": "3959:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3947:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 369,
                        "nodeType": "ExpressionStatement",
                        "src": "3947:15:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 370,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 272,
                              "src": "3976:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 372,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "tail",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 239,
                            "src": "3976:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 373,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 274,
                            "src": "3988:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3976:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "3976:15:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 481,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 272,
                        "src": "4715:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 483,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "4715:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4741:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 484,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 272,
                            "src": "4727:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 485,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "size",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 243,
                          "src": "4727:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1314,
                        "src": "4727:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4727:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4715:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 490,
                  "nodeType": "ExpressionStatement",
                  "src": "4715:28:1"
                }
              ]
            },
            "documentation": null,
            "id": 492,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 272,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2792:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 271,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "2792:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 274,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2811:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 273,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2811:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 276,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2824:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 275,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2824:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 278,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2838:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2838:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 280,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 492,
                  "src": "2855:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 279,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2855:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2791:80:1"
            },
            "returnParameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2881:0:1"
            },
            "scope": 1207,
            "src": "2776:1974:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 637,
              "nodeType": "Block",
              "src": "4896:1507:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 501,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 494,
                            "src": "4974:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 502,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "4980:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 500,
                          "name": "contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "4965:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4965:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f742072656d6f7465206e6f6465207468617420646f6573206e6f74206578697374",
                        "id": 504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4998:40:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_228b1b5fc3e31f7c7fdf0c9b9a51be53cd58eeac7f2248195c6f51de6b4bcbe6",
                          "typeString": "literal_string \"cannot remote node that does not exist\""
                        },
                        "value": "cannot remote node that does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_228b1b5fc3e31f7c7fdf0c9b9a51be53cd58eeac7f2248195c6f51de6b4bcbe6",
                          "typeString": "literal_string \"cannot remote node that does not exist\""
                        }
                      ],
                      "id": 499,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "4944:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4944:104:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 506,
                  "nodeType": "ExpressionStatement",
                  "src": "4944:104:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 507,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 494,
                        "src": "5063:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 508,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "5063:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5075:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5063:13:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 619,
                    "nodeType": "Block",
                    "src": "6155:171:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 603,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "6257:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 605,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "head",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 237,
                            "src": "6257:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6277:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6269:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6269:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6257:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 610,
                        "nodeType": "ExpressionStatement",
                        "src": "6257:22:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 611,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "6293:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 613,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "tail",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 239,
                            "src": "6293:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6313:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6305:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6305:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6293:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 618,
                        "nodeType": "ExpressionStatement",
                        "src": "6293:22:1"
                      }
                    ]
                  },
                  "id": 620,
                  "nodeType": "IfStatement",
                  "src": "5059:1267:1",
                  "trueBody": {
                    "id": 602,
                    "nodeType": "Block",
                    "src": "5078:1071:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 511,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 496,
                            "src": "5149:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 512,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "5156:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 513,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "head",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 237,
                            "src": "5156:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5149:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 538,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 496,
                              "src": "5448:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 539,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 494,
                                "src": "5455:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 540,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tail",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 239,
                              "src": "5455:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5448:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 599,
                            "nodeType": "Block",
                            "src": "5747:392:1",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 565,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5904:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 572,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5904:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 573,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 567,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 494,
                                              "src": "5915:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                                              }
                                            },
                                            "id": 568,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "nodes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 247,
                                            "src": "5915:10:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                            }
                                          },
                                          "id": 570,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 569,
                                            "name": "_id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 496,
                                            "src": "5926:3:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5915:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$235_storage",
                                            "typeString": "struct SortedDoublyLL.Node storage ref"
                                          }
                                        },
                                        "id": 571,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "prevId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 234,
                                        "src": "5915:22:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5904:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 574,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "5904:41:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 575,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5948:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 576,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5948:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 578,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 577,
                                        "name": "_id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 496,
                                        "src": "5959:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5948:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 579,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "5948:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5904:66:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 581,
                                "nodeType": "ExpressionStatement",
                                "src": "5904:66:1"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 582,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "6058:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 589,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "6058:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 590,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 584,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 494,
                                              "src": "6069:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                                              }
                                            },
                                            "id": 585,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "nodes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 247,
                                            "src": "6069:10:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                            }
                                          },
                                          "id": 587,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 586,
                                            "name": "_id",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 496,
                                            "src": "6080:3:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "6069:15:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Node_$235_storage",
                                            "typeString": "struct SortedDoublyLL.Node storage ref"
                                          }
                                        },
                                        "id": 588,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nextId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 232,
                                        "src": "6069:22:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6058:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 591,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "prevId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 234,
                                    "src": "6058:41:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 592,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "6102:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 593,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "6102:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 595,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 594,
                                        "name": "_id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 496,
                                        "src": "6113:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6102:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 596,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "prevId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 234,
                                    "src": "6102:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "6058:66:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 598,
                                "nodeType": "ExpressionStatement",
                                "src": "6058:66:1"
                              }
                            ]
                          },
                          "id": 600,
                          "nodeType": "IfStatement",
                          "src": "5444:695:1",
                          "trueBody": {
                            "id": 564,
                            "nodeType": "Block",
                            "src": "5466:275:1",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 542,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 494,
                                      "src": "5577:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 544,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "tail",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 239,
                                    "src": "5577:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 545,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5589:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 546,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5589:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 548,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 547,
                                        "name": "_id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 496,
                                        "src": "5600:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5589:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 549,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "prevId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 234,
                                    "src": "5589:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5577:34:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 551,
                                "nodeType": "ExpressionStatement",
                                "src": "5577:34:1"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 552,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5685:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 556,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "5685:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 557,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 554,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 494,
                                          "src": "5696:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 555,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "tail",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 239,
                                        "src": "5696:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5685:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 558,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "5685:28:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 560,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5724:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5716:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": "address"
                                    },
                                    "id": 561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5716:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "5685:41:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 563,
                                "nodeType": "ExpressionStatement",
                                "src": "5685:41:1"
                              }
                            ]
                          }
                        },
                        "id": 601,
                        "nodeType": "IfStatement",
                        "src": "5145:994:1",
                        "trueBody": {
                          "id": 537,
                          "nodeType": "Block",
                          "src": "5167:271:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 515,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 494,
                                    "src": "5274:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 517,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "head",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 237,
                                  "src": "5274:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 518,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 494,
                                        "src": "5286:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 519,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "5286:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 521,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 520,
                                      "name": "_id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 496,
                                      "src": "5297:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5286:15:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 522,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 232,
                                  "src": "5286:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5274:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 524,
                              "nodeType": "ExpressionStatement",
                              "src": "5274:34:1"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 525,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 494,
                                        "src": "5382:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 529,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "5382:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 530,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 527,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 494,
                                        "src": "5393:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 528,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "head",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 237,
                                      "src": "5393:9:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5382:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 531,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "prevId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 234,
                                  "src": "5382:28:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 533,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5421:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 532,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5413:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5413:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "5382:41:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 536,
                              "nodeType": "ExpressionStatement",
                              "src": "5382:41:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "6336:22:1",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 621,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 494,
                          "src": "6343:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 622,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "6343:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 624,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 623,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 496,
                        "src": "6354:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6343:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 626,
                  "nodeType": "ExpressionStatement",
                  "src": "6336:22:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 627,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 494,
                        "src": "6368:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 629,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "6368:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6394:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 630,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 494,
                            "src": "6380:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 631,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "size",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 243,
                          "src": "6380:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1290,
                        "src": "6380:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6380:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6368:28:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 636,
                  "nodeType": "ExpressionStatement",
                  "src": "6368:28:1"
                }
              ]
            },
            "documentation": null,
            "id": 638,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 494,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 638,
                  "src": "4855:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 493,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "4855:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 496,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 638,
                  "src": "4874:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 495,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4874:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4854:32:1"
            },
            "returnParameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4896:0:1"
            },
            "scope": 1207,
            "src": "4839:1564:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 677,
              "nodeType": "Block",
              "src": "6785:372:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 653,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 640,
                            "src": "6863:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 654,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 642,
                            "src": "6869:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 652,
                          "name": "contains",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 696,
                          "src": "6854:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6854:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63616e6e6f7420757064617465206e6f6465207468617420646f6573206e6f74206578697374",
                        "id": 656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6887:40:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9e0a74aaf1da13573670263c34cc02e97edbf3186dcc9a8c42fa2d33bc19fb4c",
                          "typeString": "literal_string \"cannot update node that does not exist\""
                        },
                        "value": "cannot update node that does not exist"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9e0a74aaf1da13573670263c34cc02e97edbf3186dcc9a8c42fa2d33bc19fb4c",
                          "typeString": "literal_string \"cannot update node that does not exist\""
                        }
                      ],
                      "id": 651,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1409,
                        1410
                      ],
                      "referencedDeclaration": 1410,
                      "src": "6833:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6833:104:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 658,
                  "nodeType": "ExpressionStatement",
                  "src": "6833:104:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 660,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 640,
                        "src": "6992:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 661,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 642,
                        "src": "6998:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 659,
                      "name": "remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 638,
                      "src": "6985:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$__$",
                        "typeString": "function (struct SortedDoublyLL.Data storage pointer,address)"
                      }
                    },
                    "id": 662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6985:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 663,
                  "nodeType": "ExpressionStatement",
                  "src": "6985:17:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 664,
                      "name": "_newKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 644,
                      "src": "7017:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7027:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7017:11:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 676,
                  "nodeType": "IfStatement",
                  "src": "7013:138:1",
                  "trueBody": {
                    "id": 675,
                    "nodeType": "Block",
                    "src": "7030:121:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 668,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 640,
                              "src": "7103:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 669,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 642,
                              "src": "7109:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 670,
                              "name": "_newKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 644,
                              "src": "7114:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 671,
                              "name": "_prevId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 646,
                              "src": "7123:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 672,
                              "name": "_nextId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 648,
                              "src": "7132:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 667,
                            "name": "insert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 492,
                            "src": "7096:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Data_$248_storage_ptr_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer,address,uint256,address,address)"
                            }
                          },
                          "id": 673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7096:44:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 674,
                        "nodeType": "ExpressionStatement",
                        "src": "7096:44:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 678,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 640,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6693:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 639,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "6693:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 642,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6712:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6712:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 644,
                  "name": "_newKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6725:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6725:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 646,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6742:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6742:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 648,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "6759:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6759:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6692:83:1"
            },
            "returnParameters": {
              "id": 650,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6785:0:1"
            },
            "scope": 1207,
            "src": "6674:483:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 695,
              "nodeType": "Block",
              "src": "7352:130:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 693,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 687,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 680,
                            "src": "7452:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          "id": 688,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nodes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 247,
                          "src": "7452:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                            "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                          }
                        },
                        "id": 690,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 689,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 682,
                          "src": "7463:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7452:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Node_$235_storage",
                          "typeString": "struct SortedDoublyLL.Node storage ref"
                        }
                      },
                      "id": 691,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "key",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 230,
                      "src": "7452:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 692,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7474:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7452:23:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 686,
                  "id": 694,
                  "nodeType": "Return",
                  "src": "7445:30:1"
                }
              ]
            },
            "documentation": null,
            "id": 696,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 680,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 696,
                  "src": "7291:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 679,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7291:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 682,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 696,
                  "src": "7310:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7310:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7290:32:1"
            },
            "returnParameters": {
              "id": 686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 685,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 696,
                  "src": "7346:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 684,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7346:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7345:6:1"
            },
            "scope": 1207,
            "src": "7273:209:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 709,
              "nodeType": "Block",
              "src": "7606:49:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 703,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 698,
                        "src": "7623:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 704,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "7623:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 705,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 698,
                        "src": "7636:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 706,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "maxSize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 241,
                      "src": "7636:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7623:25:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 702,
                  "id": 708,
                  "nodeType": "Return",
                  "src": "7616:32:1"
                }
              ]
            },
            "documentation": null,
            "id": 710,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isFull",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 698,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "7558:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 697,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7558:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7557:19:1"
            },
            "returnParameters": {
              "id": 702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 701,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 710,
                  "src": "7600:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7600:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7599:6:1"
            },
            "scope": 1207,
            "src": "7542:113:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 722,
              "nodeType": "Block",
              "src": "7781:38:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 717,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 712,
                        "src": "7798:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                        }
                      },
                      "id": 718,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "size",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 243,
                      "src": "7798:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 719,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7811:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7798:14:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 716,
                  "id": 721,
                  "nodeType": "Return",
                  "src": "7791:21:1"
                }
              ]
            },
            "documentation": null,
            "id": 723,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEmpty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 713,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 712,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 723,
                  "src": "7733:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 711,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7733:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7732:19:1"
            },
            "returnParameters": {
              "id": 716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 715,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 723,
                  "src": "7775:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 714,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7775:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7774:6:1"
            },
            "scope": 1207,
            "src": "7716:103:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 733,
              "nodeType": "Block",
              "src": "7957:33:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 730,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 725,
                      "src": "7974:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 731,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "size",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 243,
                    "src": "7974:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 729,
                  "id": 732,
                  "nodeType": "Return",
                  "src": "7967:16:1"
                }
              ]
            },
            "documentation": null,
            "id": 734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 725,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 734,
                  "src": "7906:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 724,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "7906:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7905:19:1"
            },
            "returnParameters": {
              "id": 729,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 728,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 734,
                  "src": "7948:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 727,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7948:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7947:9:1"
            },
            "scope": 1207,
            "src": "7889:101:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 744,
              "nodeType": "Block",
              "src": "8131:36:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 741,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 736,
                      "src": "8148:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 742,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "maxSize",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 241,
                    "src": "8148:12:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 740,
                  "id": 743,
                  "nodeType": "Return",
                  "src": "8141:19:1"
                }
              ]
            },
            "documentation": null,
            "id": 745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMaxSize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 736,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 745,
                  "src": "8080:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 735,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8080:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8079:19:1"
            },
            "returnParameters": {
              "id": 740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 739,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 745,
                  "src": "8122:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8122:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8121:9:1"
            },
            "scope": 1207,
            "src": "8060:107:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 760,
              "nodeType": "Block",
              "src": "8346:43:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 754,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 747,
                          "src": "8363:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 755,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "8363:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 757,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 756,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 749,
                        "src": "8374:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8363:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 758,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "key",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 230,
                    "src": "8363:19:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 753,
                  "id": 759,
                  "nodeType": "Return",
                  "src": "8356:26:1"
                }
              ]
            },
            "documentation": null,
            "id": 761,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 747,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 761,
                  "src": "8282:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 746,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8282:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 749,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 761,
                  "src": "8301:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 748,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8301:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8281:32:1"
            },
            "returnParameters": {
              "id": 753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 752,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 761,
                  "src": "8337:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 751,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8337:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8336:9:1"
            },
            "scope": 1207,
            "src": "8266:123:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 771,
              "nodeType": "Block",
              "src": "8554:33:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 768,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 763,
                      "src": "8571:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 769,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "head",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 237,
                    "src": "8571:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 767,
                  "id": 770,
                  "nodeType": "Return",
                  "src": "8564:16:1"
                }
              ]
            },
            "documentation": null,
            "id": 772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFirst",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 763,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 772,
                  "src": "8503:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 762,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8503:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8502:19:1"
            },
            "returnParameters": {
              "id": 767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 766,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 772,
                  "src": "8545:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 765,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8545:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8544:9:1"
            },
            "scope": 1207,
            "src": "8485:102:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 782,
              "nodeType": "Block",
              "src": "8751:33:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 779,
                      "name": "self",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 774,
                      "src": "8768:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                      }
                    },
                    "id": 780,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "tail",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 239,
                    "src": "8768:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 778,
                  "id": 781,
                  "nodeType": "Return",
                  "src": "8761:16:1"
                }
              ]
            },
            "documentation": null,
            "id": 783,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLast",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 774,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 783,
                  "src": "8700:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 773,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8700:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8699:19:1"
            },
            "returnParameters": {
              "id": 778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 777,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 783,
                  "src": "8742:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8742:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8741:9:1"
            },
            "scope": 1207,
            "src": "8683:101:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 798,
              "nodeType": "Block",
              "src": "8998:46:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 792,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 785,
                          "src": "9015:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 793,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "9015:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 795,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 794,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 787,
                        "src": "9026:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9015:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 796,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "nextId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 232,
                    "src": "9015:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 791,
                  "id": 797,
                  "nodeType": "Return",
                  "src": "9008:29:1"
                }
              ]
            },
            "documentation": null,
            "id": 799,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 785,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "8934:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 784,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "8934:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 787,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "8953:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8953:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8933:32:1"
            },
            "returnParameters": {
              "id": 791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 790,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "8989:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8989:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8988:9:1"
            },
            "scope": 1207,
            "src": "8917:127:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 814,
              "nodeType": "Block",
              "src": "9261:46:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 808,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 801,
                          "src": "9278:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 809,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "9278:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 811,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 810,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 803,
                        "src": "9289:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9278:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 812,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "prevId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 234,
                    "src": "9278:22:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 807,
                  "id": 813,
                  "nodeType": "Return",
                  "src": "9271:29:1"
                }
              ]
            },
            "documentation": null,
            "id": 815,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPrev",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 804,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 801,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 815,
                  "src": "9197:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 800,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "9197:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 803,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 815,
                  "src": "9216:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9216:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9196:32:1"
            },
            "returnParameters": {
              "id": 807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 806,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 815,
                  "src": "9252:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 805,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9252:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9251:9:1"
            },
            "scope": 1207,
            "src": "9180:127:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 910,
              "nodeType": "Block",
              "src": "9709:905:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 838,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 828,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 821,
                        "src": "9723:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9742:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9734:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9734:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9723:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 833,
                        "name": "_nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 823,
                        "src": "9748:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9767:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9759:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9759:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9748:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9723:46:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 848,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 844,
                        "name": "_prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 821,
                        "src": "9904:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9923:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9915:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9915:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9904:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 863,
                          "name": "_nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 823,
                          "src": "10121:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10140:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10132:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10132:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "10121:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 906,
                        "nodeType": "Block",
                        "src": "10334:274:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 888,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 882,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 817,
                                          "src": "10490:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 883,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "10490:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 885,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 884,
                                        "name": "_prevId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 821,
                                        "src": "10501:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10490:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 886,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nextId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 232,
                                    "src": "10490:26:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 887,
                                    "name": "_nextId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 823,
                                    "src": "10520:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "10490:37:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 889,
                                          "name": "self",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 817,
                                          "src": "10531:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                                          }
                                        },
                                        "id": 890,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nodes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 247,
                                        "src": "10531:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                        }
                                      },
                                      "id": 892,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 891,
                                        "name": "_prevId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 821,
                                        "src": "10542:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10531:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Node_$235_storage",
                                        "typeString": "struct SortedDoublyLL.Node storage ref"
                                      }
                                    },
                                    "id": 893,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "key",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 230,
                                    "src": "10531:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 894,
                                    "name": "_key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 819,
                                    "src": "10558:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10531:31:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "10490:72:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 897,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 819,
                                  "src": "10566:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 898,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 817,
                                        "src": "10574:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 899,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "10574:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 901,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 900,
                                      "name": "_nextId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 823,
                                      "src": "10585:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10574:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 902,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "key",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 230,
                                  "src": "10574:23:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10566:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10490:107:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 827,
                            "id": 905,
                            "nodeType": "Return",
                            "src": "10483:114:1"
                          }
                        ]
                      },
                      "id": 907,
                      "nodeType": "IfStatement",
                      "src": "10117:491:1",
                      "trueBody": {
                        "id": 881,
                        "nodeType": "Block",
                        "src": "10144:184:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 868,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 817,
                                    "src": "10262:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 869,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "tail",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 239,
                                  "src": "10262:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 870,
                                  "name": "_prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 821,
                                  "src": "10275:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10262:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 872,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 819,
                                  "src": "10286:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 873,
                                        "name": "self",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 817,
                                        "src": "10294:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                          "typeString": "struct SortedDoublyLL.Data storage pointer"
                                        }
                                      },
                                      "id": 874,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nodes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 247,
                                      "src": "10294:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                        "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                      }
                                    },
                                    "id": 876,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 875,
                                      "name": "_prevId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 821,
                                      "src": "10305:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10294:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Node_$235_storage",
                                      "typeString": "struct SortedDoublyLL.Node storage ref"
                                    }
                                  },
                                  "id": 877,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "key",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 230,
                                  "src": "10294:23:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10286:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10262:55:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 827,
                            "id": 880,
                            "nodeType": "Return",
                            "src": "10255:62:1"
                          }
                        ]
                      }
                    },
                    "id": 908,
                    "nodeType": "IfStatement",
                    "src": "9900:708:1",
                    "trueBody": {
                      "id": 862,
                      "nodeType": "Block",
                      "src": "9927:184:1",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 849,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 817,
                                  "src": "10045:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 850,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "head",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 237,
                                "src": "10045:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 851,
                                "name": "_nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 823,
                                "src": "10058:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10045:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 853,
                                "name": "_key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 819,
                                "src": "10069:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 854,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 817,
                                      "src": "10077:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                        "typeString": "struct SortedDoublyLL.Data storage pointer"
                                      }
                                    },
                                    "id": 855,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nodes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 247,
                                    "src": "10077:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                      "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                    }
                                  },
                                  "id": 857,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 856,
                                    "name": "_nextId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 823,
                                    "src": "10088:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10077:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Node_$235_storage",
                                    "typeString": "struct SortedDoublyLL.Node storage ref"
                                  }
                                },
                                "id": 858,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "key",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 230,
                                "src": "10077:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10069:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10045:55:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "functionReturnParameters": 827,
                          "id": 861,
                          "nodeType": "Return",
                          "src": "10038:62:1"
                        }
                      ]
                    }
                  },
                  "id": 909,
                  "nodeType": "IfStatement",
                  "src": "9719:889:1",
                  "trueBody": {
                    "id": 843,
                    "nodeType": "Block",
                    "src": "9771:123:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 840,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 817,
                              "src": "9878:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            ],
                            "id": 839,
                            "name": "isEmpty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 723,
                            "src": "9870:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer) view returns (bool)"
                            }
                          },
                          "id": 841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9870:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 827,
                        "id": 842,
                        "nodeType": "Return",
                        "src": "9863:20:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 911,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validInsertPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 817,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9613:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 816,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "9613:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 819,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9632:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 818,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9632:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 821,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9646:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 820,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9646:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 823,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9663:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 822,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9663:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9612:67:1"
            },
            "returnParameters": {
              "id": 827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 826,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "9703:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 825,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9703:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9702:6:1"
            },
            "scope": 1207,
            "src": "9584:1030:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 991,
              "nodeType": "Block",
              "src": "10936:631:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 924,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 913,
                          "src": "11036:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 925,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "head",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 237,
                        "src": "11036:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 926,
                        "name": "_startId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 917,
                        "src": "11049:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "11036:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 934,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 928,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 915,
                        "src": "11061:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 929,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 913,
                              "src": "11069:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 930,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nodes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 247,
                            "src": "11069:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                            }
                          },
                          "id": 932,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 931,
                            "name": "_startId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "11080:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11069:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$235_storage",
                            "typeString": "struct SortedDoublyLL.Node storage ref"
                          }
                        },
                        "id": 933,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 230,
                        "src": "11069:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "11061:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11036:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 943,
                  "nodeType": "IfStatement",
                  "src": "11032:117:1",
                  "trueBody": {
                    "id": 942,
                    "nodeType": "Block",
                    "src": "11095:54:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11125:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11117:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11117:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 939,
                              "name": "_startId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 917,
                              "src": "11129:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 940,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11116:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_$",
                            "typeString": "tuple(address payable,address)"
                          }
                        },
                        "functionReturnParameters": 923,
                        "id": 941,
                        "nodeType": "Return",
                        "src": "11109:29:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    945
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 945,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 991,
                      "src": "11159:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 944,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11159:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 947,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 946,
                    "name": "_startId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 917,
                    "src": "11176:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11159:25:1"
                },
                {
                  "assignments": [
                    949
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 949,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 991,
                      "src": "11194:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 948,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11194:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 955,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 950,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 913,
                          "src": "11211:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 951,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "11211:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 953,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 952,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "11222:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "11211:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 954,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "nextId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 232,
                    "src": "11211:25:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11194:42:1"
                },
                {
                  "body": {
                    "id": 985,
                    "nodeType": "Block",
                    "src": "11420:107:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 969,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 945,
                            "src": "11434:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 970,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 913,
                                  "src": "11443:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 971,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "11443:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 973,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 972,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 945,
                                "src": "11454:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11443:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 974,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 232,
                            "src": "11443:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11434:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 976,
                        "nodeType": "ExpressionStatement",
                        "src": "11434:34:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 977,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 949,
                            "src": "11482:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 978,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 913,
                                  "src": "11491:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 979,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "11491:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 981,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 980,
                                "name": "prevId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 945,
                                "src": "11502:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11491:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 982,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 232,
                            "src": "11491:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11482:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 984,
                        "nodeType": "ExpressionStatement",
                        "src": "11482:34:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 956,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "11346:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11364:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11356:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11356:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "11346:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 967,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "11370:48:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 962,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 913,
                            "src": "11391:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 963,
                            "name": "_key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 915,
                            "src": "11397:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 964,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 945,
                            "src": "11403:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 965,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 949,
                            "src": "11411:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 961,
                          "name": "validInsertPosition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "11371:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (bool)"
                          }
                        },
                        "id": 966,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11371:47:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11346:72:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 986,
                  "nodeType": "WhileStatement",
                  "src": "11339:188:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 987,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 945,
                        "src": "11545:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 988,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 949,
                        "src": "11553:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 989,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "11544:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "functionReturnParameters": 923,
                  "id": 990,
                  "nodeType": "Return",
                  "src": "11537:23:1"
                }
              ]
            },
            "documentation": null,
            "id": 992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "descendList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 913,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10844:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 912,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "10844:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 915,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10863:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 914,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10863:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 917,
                  "name": "_startId",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10877:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10877:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10843:51:1"
            },
            "returnParameters": {
              "id": 923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 920,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10918:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10918:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 922,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 992,
                  "src": "10927:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10927:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10917:18:1"
            },
            "scope": 1207,
            "src": "10823:744:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1072,
              "nodeType": "Block",
              "src": "11888:629:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1005,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 994,
                          "src": "11987:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 1006,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tail",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 239,
                        "src": "11987:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1007,
                        "name": "_startId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 998,
                        "src": "12000:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "11987:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1009,
                        "name": "_key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 996,
                        "src": "12012:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1010,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 994,
                              "src": "12020:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            "id": 1011,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nodes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 247,
                            "src": "12020:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                              "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                            }
                          },
                          "id": 1013,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1012,
                            "name": "_startId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 998,
                            "src": "12031:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12020:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Node_$235_storage",
                            "typeString": "struct SortedDoublyLL.Node storage ref"
                          }
                        },
                        "id": 1014,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 230,
                        "src": "12020:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12012:32:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11987:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1024,
                  "nodeType": "IfStatement",
                  "src": "11983:117:1",
                  "trueBody": {
                    "id": 1023,
                    "nodeType": "Block",
                    "src": "12046:54:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 1017,
                              "name": "_startId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 998,
                              "src": "12068:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12086:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 1018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12078:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12078:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "id": 1021,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12067:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_payable_$",
                            "typeString": "tuple(address,address payable)"
                          }
                        },
                        "functionReturnParameters": 1004,
                        "id": 1022,
                        "nodeType": "Return",
                        "src": "12060:29:1"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1026
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1026,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1072,
                      "src": "12110:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1025,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12110:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1028,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1027,
                    "name": "_startId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 998,
                    "src": "12127:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12110:25:1"
                },
                {
                  "assignments": [
                    1030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1030,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1072,
                      "src": "12145:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1029,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12145:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1036,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1031,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 994,
                          "src": "12162:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                            "typeString": "struct SortedDoublyLL.Data storage pointer"
                          }
                        },
                        "id": 1032,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nodes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 247,
                        "src": "12162:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                          "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                        }
                      },
                      "id": 1034,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1033,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1026,
                        "src": "12173:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "12162:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Node_$235_storage",
                        "typeString": "struct SortedDoublyLL.Node storage ref"
                      }
                    },
                    "id": 1035,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "prevId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 234,
                    "src": "12162:25:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12145:42:1"
                },
                {
                  "body": {
                    "id": 1066,
                    "nodeType": "Block",
                    "src": "12370:107:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1050,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1026,
                            "src": "12384:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1051,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 994,
                                  "src": "12393:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 1052,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "12393:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 1054,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1053,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1026,
                                "src": "12404:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12393:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 1055,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "prevId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 234,
                            "src": "12393:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12384:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1057,
                        "nodeType": "ExpressionStatement",
                        "src": "12384:34:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1058,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1030,
                            "src": "12432:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1059,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 994,
                                  "src": "12441:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                "id": 1060,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nodes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 247,
                                "src": "12441:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                  "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                }
                              },
                              "id": 1062,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1061,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1026,
                                "src": "12452:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12441:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Node_$235_storage",
                                "typeString": "struct SortedDoublyLL.Node storage ref"
                              }
                            },
                            "id": 1063,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "prevId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 234,
                            "src": "12441:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12432:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1065,
                        "nodeType": "ExpressionStatement",
                        "src": "12432:34:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1041,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1037,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1026,
                        "src": "12296:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12314:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12306:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12306:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "12296:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "12320:48:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1043,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 994,
                            "src": "12341:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1044,
                            "name": "_key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 996,
                            "src": "12347:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1045,
                            "name": "prevId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1030,
                            "src": "12353:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1046,
                            "name": "nextId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1026,
                            "src": "12361:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                              "typeString": "struct SortedDoublyLL.Data storage pointer"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1042,
                          "name": "validInsertPosition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "12321:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address,address) view returns (bool)"
                          }
                        },
                        "id": 1047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12321:47:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12296:72:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1067,
                  "nodeType": "WhileStatement",
                  "src": "12289:188:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 1068,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1030,
                        "src": "12495:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1069,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1026,
                        "src": "12503:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 1070,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12494:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                      "typeString": "tuple(address,address)"
                    }
                  },
                  "functionReturnParameters": 1004,
                  "id": 1071,
                  "nodeType": "Return",
                  "src": "12487:23:1"
                }
              ]
            },
            "documentation": null,
            "id": 1073,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ascendList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 994,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11796:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 993,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "11796:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 996,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11815:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 995,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11815:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 998,
                  "name": "_startId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11829:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11829:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11795:51:1"
            },
            "returnParameters": {
              "id": 1004,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1001,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11870:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1000,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11870:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1003,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "11879:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11879:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11869:18:1"
            },
            "scope": 1207,
            "src": "11776:741:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1205,
              "nodeType": "Block",
              "src": "12903:1251:1",
              "statements": [
                {
                  "assignments": [
                    1089
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1089,
                      "name": "prevId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1205,
                      "src": "12913:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1088,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12913:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1091,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1090,
                    "name": "_prevId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1079,
                    "src": "12930:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12913:24:1"
                },
                {
                  "assignments": [
                    1093
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1093,
                      "name": "nextId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1205,
                      "src": "12947:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1092,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12947:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1095,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1094,
                    "name": "_nextId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1081,
                    "src": "12964:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12947:24:1"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1096,
                      "name": "prevId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1089,
                      "src": "12986:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13004:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "12996:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12996:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "12986:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1123,
                  "nodeType": "IfStatement",
                  "src": "12982:259:1",
                  "trueBody": {
                    "id": 1122,
                    "nodeType": "Block",
                    "src": "13008:233:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "13026:23:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1102,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "13036:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1103,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "13042:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1101,
                                "name": "contains",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 696,
                                "src": "13027:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13027:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1106,
                              "name": "_key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "13053:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1107,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1075,
                                    "src": "13060:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 1108,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "13060:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 1110,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1109,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "13071:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13060:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 1111,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 230,
                              "src": "13060:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13053:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13026:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1121,
                        "nodeType": "IfStatement",
                        "src": "13022:209:1",
                        "trueBody": {
                          "id": 1120,
                          "nodeType": "Block",
                          "src": "13084:147:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1114,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "13197:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13214:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1115,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13206:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1117,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13206:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13197:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1119,
                              "nodeType": "ExpressionStatement",
                              "src": "13197:19:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1124,
                      "name": "nextId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1093,
                      "src": "13255:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13273:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 1125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13265:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13265:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "13255:20:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1151,
                  "nodeType": "IfStatement",
                  "src": "13251:258:1",
                  "trueBody": {
                    "id": 1150,
                    "nodeType": "Block",
                    "src": "13277:232:1",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "13295:23:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1130,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "13305:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1131,
                                  "name": "nextId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1093,
                                  "src": "13311:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1129,
                                "name": "contains",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 696,
                                "src": "13296:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,address) view returns (bool)"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13296:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1134,
                              "name": "_key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "13322:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1135,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1075,
                                    "src": "13329:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                      "typeString": "struct SortedDoublyLL.Data storage pointer"
                                    }
                                  },
                                  "id": 1136,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nodes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 247,
                                  "src": "13329:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Node_$235_storage_$",
                                    "typeString": "mapping(address => struct SortedDoublyLL.Node storage ref)"
                                  }
                                },
                                "id": 1138,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1137,
                                  "name": "nextId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1093,
                                  "src": "13340:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13329:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Node_$235_storage",
                                  "typeString": "struct SortedDoublyLL.Node storage ref"
                                }
                              },
                              "id": 1139,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 230,
                              "src": "13329:22:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13322:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13295:56:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1149,
                        "nodeType": "IfStatement",
                        "src": "13291:208:1",
                        "trueBody": {
                          "id": 1148,
                          "nodeType": "Block",
                          "src": "13353:146:1",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1142,
                                  "name": "nextId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1093,
                                  "src": "13465:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13482:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13474:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13474:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13465:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1147,
                              "nodeType": "ExpressionStatement",
                              "src": "13465:19:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1156,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1152,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1089,
                        "src": "13523:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13541:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13533:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13533:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "13523:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1157,
                        "name": "nextId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1093,
                        "src": "13547:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13565:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13557:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13557:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "13547:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "13523:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 1171,
                        "name": "prevId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1089,
                        "src": "13702:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13720:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13712:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13712:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "13702:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1183,
                          "name": "nextId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1093,
                          "src": "13869:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1185,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13887:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13879:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 1186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13879:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "13869:20:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1201,
                        "nodeType": "Block",
                        "src": "14034:114:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1196,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "14118:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1197,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1077,
                                  "src": "14124:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1198,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "14130:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1195,
                                "name": "descendList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 992,
                                "src": "14106:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                                }
                              },
                              "id": 1199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14106:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "functionReturnParameters": 1087,
                            "id": 1200,
                            "nodeType": "Return",
                            "src": "14099:38:1"
                          }
                        ]
                      },
                      "id": 1202,
                      "nodeType": "IfStatement",
                      "src": "13865:283:1",
                      "trueBody": {
                        "id": 1194,
                        "nodeType": "Block",
                        "src": "13891:137:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1189,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "13998:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1190,
                                  "name": "_key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1077,
                                  "src": "14004:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1191,
                                  "name": "prevId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1089,
                                  "src": "14010:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                    "typeString": "struct SortedDoublyLL.Data storage pointer"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1188,
                                "name": "descendList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 992,
                                "src": "13986:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                                }
                              },
                              "id": 1192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13986:31:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "functionReturnParameters": 1087,
                            "id": 1193,
                            "nodeType": "Return",
                            "src": "13979:38:1"
                          }
                        ]
                      }
                    },
                    "id": 1203,
                    "nodeType": "IfStatement",
                    "src": "13698:450:1",
                    "trueBody": {
                      "id": 1182,
                      "nodeType": "Block",
                      "src": "13724:135:1",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1177,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1075,
                                "src": "13829:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "_key",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1077,
                                "src": "13835:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1179,
                                "name": "nextId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1093,
                                "src": "13841:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1176,
                              "name": "ascendList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "13818:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                                "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                              }
                            },
                            "id": 1180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13818:30:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "functionReturnParameters": 1087,
                          "id": 1181,
                          "nodeType": "Return",
                          "src": "13811:37:1"
                        }
                      ]
                    }
                  },
                  "id": 1204,
                  "nodeType": "IfStatement",
                  "src": "13519:629:1",
                  "trueBody": {
                    "id": 1170,
                    "nodeType": "Block",
                    "src": "13569:123:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1164,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1075,
                              "src": "13659:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1165,
                              "name": "_key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1077,
                              "src": "13665:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1166,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1075,
                                "src": "13671:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                  "typeString": "struct SortedDoublyLL.Data storage pointer"
                                }
                              },
                              "id": 1167,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "head",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 237,
                              "src": "13671:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                                "typeString": "struct SortedDoublyLL.Data storage pointer"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1163,
                            "name": "descendList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 992,
                            "src": "13647:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Data_$248_storage_ptr_$_t_uint256_$_t_address_$returns$_t_address_$_t_address_$",
                              "typeString": "function (struct SortedDoublyLL.Data storage pointer,uint256,address) view returns (address,address)"
                            }
                          },
                          "id": 1168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13647:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "functionReturnParameters": 1087,
                        "id": 1169,
                        "nodeType": "Return",
                        "src": "13640:41:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 1206,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "findInsertPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1075,
                  "name": "self",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12795:17:1",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                    "typeString": "struct SortedDoublyLL.Data"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1074,
                    "name": "Data",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 248,
                    "src": "12795:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Data_$248_storage_ptr",
                      "typeString": "struct SortedDoublyLL.Data"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1077,
                  "name": "_key",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12814:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1076,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12814:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1079,
                  "name": "_prevId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12828:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1078,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12828:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1081,
                  "name": "_nextId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12845:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1080,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12845:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12794:67:1"
            },
            "returnParameters": {
              "id": 1087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1084,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12885:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1083,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12885:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1086,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1206,
                  "src": "12894:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1085,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12894:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12884:18:1"
            },
            "scope": 1207,
            "src": "12767:1387:1",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 1208,
        "src": "1251:12905:1"
      }
    ],
    "src": "0:14156:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-02-02T18:01:12.584Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}