{
  "contractName": "BytesIteratorStorage",
  "abi": [],
  "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a723058207eebfac708a45654d0c8fb2ce1f04a3d31ff459716cbc1f00db8632f7d96d0e50029",
  "deployedBytecode": "0x6080604052600080fd00a165627a7a723058207eebfac708a45654d0c8fb2ce1f04a3d31ff459716cbc1f00db8632f7d96d0e50029",
  "sourceMap": "135:2358:77:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;135:2358:77;;;;;;;",
  "deployedSourceMap": "135:2358:77:-;;;;;",
  "source": "pragma solidity ^0.4.19;\n\nimport \"../lib/DoublyLinkedList.sol\";\n\n\n/**\n  @title Bytes Iterator Storage\n  @author DigixGlobal Pte Ltd\n*/\ncontract BytesIteratorStorage {\n\n  // Initialize Doubly Linked List of Bytes\n  using DoublyLinkedList for DoublyLinkedList.Bytes;\n\n  /**\n    @notice Reads the first item from the list of Bytes\n    @param _list The source list\n    @return {\"_item\": \"The first item from the list\"}\n  */\n  function read_first_from_bytesarray(DoublyLinkedList.Bytes storage _list)\n           internal\n           constant\n           returns (bytes32 _item)\n  {\n    _item = _list.start_item();\n  }\n\n  /**\n    @notice Reads the last item from the list of Bytes\n    @param _list The source list\n    @return {\"_item\": \"The last item from the list\"}\n  */\n  function read_last_from_bytesarray(DoublyLinkedList.Bytes storage _list)\n           internal\n           constant\n           returns (bytes32 _item)\n  {\n    _item = _list.end_item();\n  }\n\n  /**\n    @notice Reads the next item on the list of Bytes\n    @param _list The source list\n    @param _current_item The current item to be used as base line\n    @return {\"_item\": \"The next item from the list based on the specieid `_current_item`\"}\n    TODO: Need to verify what happens if the specified `_current_item` is the last item from the list\n  */\n  function read_next_from_bytesarray(DoublyLinkedList.Bytes storage _list, bytes32 _current_item)\n           internal\n           constant\n           returns (bytes32 _item)\n  {\n    _item = _list.next_item(_current_item);\n  }\n\n  /**\n    @notice Reads the previous item on the list of Bytes\n    @param _list The source list\n    @param _current_item The current item to be used as base line\n    @return {\"_item\": \"The previous item from the list based on the spcified `_current_item`\"}\n    TODO: Need to verify what happens if the specified `_current_item` is the first item from the list\n  */\n  function read_previous_from_bytesarray(DoublyLinkedList.Bytes storage _list, bytes32 _current_item)\n           internal\n           constant\n           returns (bytes32 _item)\n  {\n    _item = _list.previous_item(_current_item);\n  }\n\n  /**\n    @notice Reads the list of Bytes and returns the length of the list\n    @param _list The source list\n    @return {\"count\": \"`uint256` The lenght of the list\"}\n\n  */\n  function read_total_bytesarray(DoublyLinkedList.Bytes storage _list)\n           internal\n           constant\n           returns (uint256 _count)\n  {\n    _count = _list.total();\n  }\n\n}\n",
  "sourcePath": "@digix/solidity-collections/contracts/abstract/BytesIteratorStorage.sol",
  "ast": {
    "absolutePath": "@digix/solidity-collections/contracts/abstract/BytesIteratorStorage.sol",
    "exportedSymbols": {
      "BytesIteratorStorage": [
        22049
      ]
    },
    "id": 22050,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21968,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:77"
      },
      {
        "absolutePath": "@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol",
        "file": "../lib/DoublyLinkedList.sol",
        "id": 21969,
        "nodeType": "ImportDirective",
        "scope": 22050,
        "sourceUnit": 25117,
        "src": "26:37:77",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Bytes Iterator Storage\n@author DigixGlobal Pte Ltd",
        "fullyImplemented": true,
        "id": 22049,
        "linearizedBaseContracts": [
          22049
        ],
        "name": "BytesIteratorStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21972,
            "libraryName": {
              "contractScope": null,
              "id": 21970,
              "name": "DoublyLinkedList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25116,
              "src": "220:16:77",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DoublyLinkedList_$25116",
                "typeString": "library DoublyLinkedList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "214:50:77",
            "typeName": {
              "contractScope": null,
              "id": 21971,
              "name": "DoublyLinkedList.Bytes",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22605,
              "src": "241:22:77",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                "typeString": "struct DoublyLinkedList.Bytes"
              }
            }
          },
          {
            "body": {
              "id": 21985,
              "nodeType": "Block",
              "src": "573:37:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21979,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21977,
                      "src": "579:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21980,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21974,
                          "src": "587:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 21981,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "start_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24666,
                        "src": "587:16:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer) view returns (bytes32)"
                        }
                      },
                      "id": 21982,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "587:18:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "579:26:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21984,
                  "nodeType": "ExpressionStatement",
                  "src": "579:26:77"
                }
              ]
            },
            "documentation": "@notice Reads the first item from the list of Bytes\n@param _list The source list\n@return {\"_item\": \"The first item from the list\"}",
            "id": 21986,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_first_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21974,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 21986,
                  "src": "458:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21973,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "458:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "457:38:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 21978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21977,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 21986,
                  "src": "556:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21976,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "556:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "555:15:77"
            },
            "scope": 22049,
            "src": "422:188:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21999,
              "nodeType": "Block",
              "src": "916:35:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21993,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21991,
                      "src": "922:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21994,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21988,
                          "src": "930:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 21995,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "end_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24696,
                        "src": "930:14:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer) view returns (bytes32)"
                        }
                      },
                      "id": 21996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "930:16:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "922:24:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21998,
                  "nodeType": "ExpressionStatement",
                  "src": "922:24:77"
                }
              ]
            },
            "documentation": "@notice Reads the last item from the list of Bytes\n@param _list The source list\n@return {\"_item\": \"The last item from the list\"}",
            "id": 22000,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_last_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21988,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22000,
                  "src": "801:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21987,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "801:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "800:38:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 21992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21991,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22000,
                  "src": "899:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21990,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "899:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "898:15:77"
            },
            "scope": 22049,
            "src": "766:185:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22016,
              "nodeType": "Block",
              "src": "1484:49:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 22014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 22009,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22007,
                      "src": "1490:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 22012,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22004,
                          "src": "1514:13:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 22010,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22002,
                          "src": "1498:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 22011,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "next_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24804,
                        "src": "1498:15:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer,bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 22013,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1498:30:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1490:38:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 22015,
                  "nodeType": "ExpressionStatement",
                  "src": "1490:38:77"
                }
              ]
            },
            "documentation": "@notice Reads the next item on the list of Bytes\n@param _list The source list\n@param _current_item The current item to be used as base line\n@return {\"_item\": \"The next item from the list based on the specieid `_current_item`\"}\nTODO: Need to verify what happens if the specified `_current_item` is the last item from the list",
            "id": 22017,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_next_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22002,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22017,
                  "src": "1346:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22001,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "1346:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22004,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22017,
                  "src": "1384:21:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22003,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1384:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1345:61:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 22008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22007,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22017,
                  "src": "1467:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22006,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1467:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1466:15:77"
            },
            "scope": 22049,
            "src": "1311:222:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22033,
              "nodeType": "Block",
              "src": "2079:53:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 22031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 22026,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22024,
                      "src": "2085:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 22029,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22021,
                          "src": "2113:13:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 22027,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22019,
                          "src": "2093:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 22028,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "previous_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24768,
                        "src": "2093:19:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer,bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 22030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2093:34:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2085:42:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 22032,
                  "nodeType": "ExpressionStatement",
                  "src": "2085:42:77"
                }
              ]
            },
            "documentation": "@notice Reads the previous item on the list of Bytes\n@param _list The source list\n@param _current_item The current item to be used as base line\n@return {\"_item\": \"The previous item from the list based on the spcified `_current_item`\"}\nTODO: Need to verify what happens if the specified `_current_item` is the first item from the list",
            "id": 22034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_previous_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22019,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22034,
                  "src": "1941:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22018,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "1941:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22021,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22034,
                  "src": "1979:21:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22020,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1940:61:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 22025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22024,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22034,
                  "src": "2062:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22023,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2062:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2061:15:77"
            },
            "scope": 22049,
            "src": "1902:230:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22047,
              "nodeType": "Block",
              "src": "2457:33:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 22045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 22041,
                      "name": "_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22039,
                      "src": "2463:6:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 22042,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22036,
                          "src": "2472:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 22043,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "total",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24636,
                        "src": "2472:11:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 22044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2472:13:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2463:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 22046,
                  "nodeType": "ExpressionStatement",
                  "src": "2463:22:77"
                }
              ]
            },
            "documentation": "@notice Reads the list of Bytes and returns the length of the list\n@param _list The source list\n@return {\"count\": \"`uint256` The lenght of the list\"}",
            "id": 22048,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_total_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22036,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22048,
                  "src": "2341:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22035,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "2341:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2340:38:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 22040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22039,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 22048,
                  "src": "2439:14:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22038,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2439:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2438:16:77"
            },
            "scope": 22049,
            "src": "2310:180:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 22050,
        "src": "135:2358:77"
      }
    ],
    "src": "0:2494:77"
  },
  "legacyAST": {
    "absolutePath": "@digix/solidity-collections/contracts/abstract/BytesIteratorStorage.sol",
    "exportedSymbols": {
      "BytesIteratorStorage": [
        22049
      ]
    },
    "id": 22050,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21968,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:77"
      },
      {
        "absolutePath": "@digix/solidity-collections/contracts/lib/DoublyLinkedList.sol",
        "file": "../lib/DoublyLinkedList.sol",
        "id": 21969,
        "nodeType": "ImportDirective",
        "scope": 22050,
        "sourceUnit": 25117,
        "src": "26:37:77",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@title Bytes Iterator Storage\n@author DigixGlobal Pte Ltd",
        "fullyImplemented": true,
        "id": 22049,
        "linearizedBaseContracts": [
          22049
        ],
        "name": "BytesIteratorStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21972,
            "libraryName": {
              "contractScope": null,
              "id": 21970,
              "name": "DoublyLinkedList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25116,
              "src": "220:16:77",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DoublyLinkedList_$25116",
                "typeString": "library DoublyLinkedList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "214:50:77",
            "typeName": {
              "contractScope": null,
              "id": 21971,
              "name": "DoublyLinkedList.Bytes",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22605,
              "src": "241:22:77",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                "typeString": "struct DoublyLinkedList.Bytes"
              }
            }
          },
          {
            "body": {
              "id": 21985,
              "nodeType": "Block",
              "src": "573:37:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21979,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21977,
                      "src": "579:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21980,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21974,
                          "src": "587:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 21981,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "start_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24666,
                        "src": "587:16:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer) view returns (bytes32)"
                        }
                      },
                      "id": 21982,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "587:18:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "579:26:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21984,
                  "nodeType": "ExpressionStatement",
                  "src": "579:26:77"
                }
              ]
            },
            "documentation": "@notice Reads the first item from the list of Bytes\n@param _list The source list\n@return {\"_item\": \"The first item from the list\"}",
            "id": 21986,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_first_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21975,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21974,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 21986,
                  "src": "458:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21973,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "458:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "457:38:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 21978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21977,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 21986,
                  "src": "556:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21976,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "556:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "555:15:77"
            },
            "scope": 22049,
            "src": "422:188:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21999,
              "nodeType": "Block",
              "src": "916:35:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21993,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21991,
                      "src": "922:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21994,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21988,
                          "src": "930:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 21995,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "end_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24696,
                        "src": "930:14:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer) view returns (bytes32)"
                        }
                      },
                      "id": 21996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "930:16:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "922:24:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21998,
                  "nodeType": "ExpressionStatement",
                  "src": "922:24:77"
                }
              ]
            },
            "documentation": "@notice Reads the last item from the list of Bytes\n@param _list The source list\n@return {\"_item\": \"The last item from the list\"}",
            "id": 22000,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_last_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21988,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22000,
                  "src": "801:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21987,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "801:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "800:38:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 21992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21991,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22000,
                  "src": "899:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21990,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "899:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "898:15:77"
            },
            "scope": 22049,
            "src": "766:185:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22016,
              "nodeType": "Block",
              "src": "1484:49:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 22014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 22009,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22007,
                      "src": "1490:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 22012,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22004,
                          "src": "1514:13:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 22010,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22002,
                          "src": "1498:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 22011,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "next_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24804,
                        "src": "1498:15:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer,bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 22013,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1498:30:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1490:38:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 22015,
                  "nodeType": "ExpressionStatement",
                  "src": "1490:38:77"
                }
              ]
            },
            "documentation": "@notice Reads the next item on the list of Bytes\n@param _list The source list\n@param _current_item The current item to be used as base line\n@return {\"_item\": \"The next item from the list based on the specieid `_current_item`\"}\nTODO: Need to verify what happens if the specified `_current_item` is the last item from the list",
            "id": 22017,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_next_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22002,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22017,
                  "src": "1346:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22001,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "1346:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22004,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22017,
                  "src": "1384:21:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22003,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1384:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1345:61:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 22008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22007,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22017,
                  "src": "1467:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22006,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1467:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1466:15:77"
            },
            "scope": 22049,
            "src": "1311:222:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22033,
              "nodeType": "Block",
              "src": "2079:53:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 22031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 22026,
                      "name": "_item",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22024,
                      "src": "2085:5:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 22029,
                          "name": "_current_item",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22021,
                          "src": "2113:13:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 22027,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22019,
                          "src": "2093:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 22028,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "previous_item",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24768,
                        "src": "2093:19:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer,bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 22030,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2093:34:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2085:42:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 22032,
                  "nodeType": "ExpressionStatement",
                  "src": "2085:42:77"
                }
              ]
            },
            "documentation": "@notice Reads the previous item on the list of Bytes\n@param _list The source list\n@param _current_item The current item to be used as base line\n@return {\"_item\": \"The previous item from the list based on the spcified `_current_item`\"}\nTODO: Need to verify what happens if the specified `_current_item` is the first item from the list",
            "id": 22034,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_previous_from_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22019,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22034,
                  "src": "1941:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22018,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "1941:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22021,
                  "name": "_current_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22034,
                  "src": "1979:21:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22020,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1940:61:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 22025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22024,
                  "name": "_item",
                  "nodeType": "VariableDeclaration",
                  "scope": 22034,
                  "src": "2062:13:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 22023,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2062:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2061:15:77"
            },
            "scope": 22049,
            "src": "1902:230:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 22047,
              "nodeType": "Block",
              "src": "2457:33:77",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 22045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 22041,
                      "name": "_count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22039,
                      "src": "2463:6:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 22042,
                          "name": "_list",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22036,
                          "src": "2472:5:77",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                            "typeString": "struct DoublyLinkedList.Bytes storage pointer"
                          }
                        },
                        "id": 22043,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "total",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24636,
                        "src": "2472:11:77",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Bytes_$22605_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Bytes_$22605_storage_ptr_$",
                          "typeString": "function (struct DoublyLinkedList.Bytes storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 22044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2472:13:77",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2463:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 22046,
                  "nodeType": "ExpressionStatement",
                  "src": "2463:22:77"
                }
              ]
            },
            "documentation": "@notice Reads the list of Bytes and returns the length of the list\n@param _list The source list\n@return {\"count\": \"`uint256` The lenght of the list\"}",
            "id": 22048,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "read_total_bytesarray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 22037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22036,
                  "name": "_list",
                  "nodeType": "VariableDeclaration",
                  "scope": 22048,
                  "src": "2341:36:77",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                    "typeString": "struct DoublyLinkedList.Bytes"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 22035,
                    "name": "DoublyLinkedList.Bytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22605,
                    "src": "2341:22:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes_$22605_storage_ptr",
                      "typeString": "struct DoublyLinkedList.Bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2340:38:77"
            },
            "payable": false,
            "returnParameters": {
              "id": 22040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22039,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 22048,
                  "src": "2439:14:77",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22038,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2439:7:77",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2438:16:77"
            },
            "scope": 22049,
            "src": "2310:180:77",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 22050,
        "src": "135:2358:77"
      }
    ],
    "src": "0:2494:77"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-03-13T02:38:46.139Z"
}