{
  "contractName": "LibSet_bytes4",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"solstruct/contracts/libs/LibSet.bytes4.sol\":\"LibSet_bytes4\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"solstruct/contracts/libs/LibSet.bytes4.sol\":{\"keccak256\":\"0xdec5833ab65ae8cab500b84424dde49c1f7817c6575e1631a729fc88c6d4bd7f\",\"urls\":[\"bzz-raw://2e5d23b8383819e6dd77ea61ed30740bcba45b0fff609922b11d1cae2b0223f1\",\"dweb:/ipfs/QmQ27sefXEYXBUSEGdPkuzCqemtUJzNXhhsyd7kB94w6CE\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c9a19f21a5cbc251f76885ce32c4904639d26d7eeab1d0c7aa1a6aad777b3c1664736f6c63430006060033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c9a19f21a5cbc251f76885ce32c4904639d26d7eeab1d0c7aa1a6aad777b3c1664736f6c63430006060033",
  "immutableReferences": {},
  "sourceMap": "32:1538:82:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "32:1538:82:-:0;;;;;;12:1:-1;9;2:12",
  "source": "pragma solidity >0.5.0 <0.7.0;\n\nlibrary LibSet_bytes4\n{\n\tstruct set\n\t{\n\t\tbytes4[] values;\n\t\tmapping(bytes4 => uint256) indexes;\n\t}\n\n\tfunction length(set storage _set)\n\tinternal view returns (uint256)\n\t{\n\t\treturn _set.values.length;\n\t}\n\n\tfunction at(set storage _set, uint256 _index)\n\tinternal view returns (bytes4 )\n\t{\n\t\treturn _set.values[_index - 1];\n\t}\n\n\tfunction indexOf(set storage _set, bytes4  _value)\n\tinternal view returns (uint256)\n\t{\n\t\treturn _set.indexes[_value];\n\t}\n\n\tfunction contains(set storage _set, bytes4  _value)\n\tinternal view returns (bool)\n\t{\n\t\treturn indexOf(_set, _value) != 0;\n\t}\n\n\tfunction content(set storage _set)\n\tinternal view returns (bytes4[] memory)\n\t{\n\t\treturn _set.values;\n\t}\n\n\tfunction add(set storage _set, bytes4  _value)\n\tinternal returns (bool)\n\t{\n\t\tif (contains(_set, _value))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\t_set.values.push(_value);\n\t\t_set.indexes[_value] = _set.values.length;\n\t\treturn true;\n\t}\n\n\tfunction remove(set storage _set, bytes4  _value)\n\tinternal returns (bool)\n\t{\n\t\tif (!contains(_set, _value))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tuint256 i    = indexOf(_set, _value);\n\t\tuint256 last = length(_set);\n\n\t\tif (i != last)\n\t\t{\n\t\t\tbytes4  swapValue = _set.values[last - 1];\n\t\t\t_set.values[i - 1] = swapValue;\n\t\t\t_set.indexes[swapValue] = i;\n\t\t}\n\n\t\tdelete _set.indexes[_value];\n\t\t_set.values.pop();\n\n\t\treturn true;\n\t}\n\n\tfunction clear(set storage _set)\n\tinternal returns (bool)\n\t{\n\t\tfor (uint256 i = _set.values.length; i > 0; --i)\n\t\t{\n\t\t\tdelete _set.indexes[_set.values[i-1]];\n\t\t}\n\t\t_set.values = new bytes4[](0);\n\t\treturn true;\n\t}\n}\n",
  "sourcePath": "solstruct/contracts/libs/LibSet.bytes4.sol",
  "ast": {
    "absolutePath": "solstruct/contracts/libs/LibSet.bytes4.sol",
    "exportedSymbols": {
      "LibSet_bytes4": [
        13964
      ]
    },
    "id": 13965,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13720,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".0",
          "<",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:30:82"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 13964,
        "linearizedBaseContracts": [
          13964
        ],
        "name": "LibSet_bytes4",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "LibSet_bytes4.set",
            "id": 13728,
            "members": [
              {
                "constant": false,
                "id": 13723,
                "mutability": "mutable",
                "name": "values",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13728,
                "src": "73:15:82",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                  "typeString": "bytes4[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 13721,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "73:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 13722,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "73:8:82",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                    "typeString": "bytes4[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13727,
                "mutability": "mutable",
                "name": "indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13728,
                "src": "92:34:82",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                  "typeString": "mapping(bytes4 => uint256)"
                },
                "typeName": {
                  "id": 13726,
                  "keyType": {
                    "id": 13724,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "100:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "92:26:82",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                    "typeString": "mapping(bytes4 => uint256)"
                  },
                  "valueType": {
                    "id": 13725,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "110:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "set",
            "nodeType": "StructDefinition",
            "scope": 13964,
            "src": "57:73:82",
            "visibility": "public"
          },
          {
            "body": {
              "id": 13739,
              "nodeType": "Block",
              "src": "201:33:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13735,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13730,
                        "src": "212:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13736,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13723,
                      "src": "212:11:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                        "typeString": "bytes4[] storage ref"
                      }
                    },
                    "id": 13737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "212:18:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13734,
                  "id": 13738,
                  "nodeType": "Return",
                  "src": "205:25:82"
                }
              ]
            },
            "documentation": null,
            "id": 13740,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13730,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13740,
                  "src": "149:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13729,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "149:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "148:18:82"
            },
            "returnParameters": {
              "id": 13734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13733,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13740,
                  "src": "191:7:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "191:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "190:9:82"
            },
            "scope": 13964,
            "src": "133:101:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13756,
              "nodeType": "Block",
              "src": "317:38:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13749,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13742,
                        "src": "328:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13750,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13723,
                      "src": "328:11:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                        "typeString": "bytes4[] storage ref"
                      }
                    },
                    "id": 13754,
                    "indexExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13753,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 13751,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "340:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 13752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "349:1:82",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "340:10:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "328:23:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 13748,
                  "id": 13755,
                  "nodeType": "Return",
                  "src": "321:30:82"
                }
              ]
            },
            "documentation": null,
            "id": 13757,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13742,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13757,
                  "src": "249:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13741,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "249:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13744,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13757,
                  "src": "267:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13743,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "267:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "248:34:82"
            },
            "returnParameters": {
              "id": 13748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13747,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13757,
                  "src": "307:6:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13746,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "307:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "306:9:82"
            },
            "scope": 13964,
            "src": "237:118:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13771,
              "nodeType": "Block",
              "src": "443:35:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13766,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13759,
                        "src": "454:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13767,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13727,
                      "src": "454:12:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                        "typeString": "mapping(bytes4 => uint256)"
                      }
                    },
                    "id": 13769,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13768,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13761,
                      "src": "467:6:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "454:20:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13765,
                  "id": 13770,
                  "nodeType": "Return",
                  "src": "447:27:82"
                }
              ]
            },
            "documentation": null,
            "id": 13772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "indexOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13759,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13772,
                  "src": "375:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13758,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "375:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13761,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13772,
                  "src": "393:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13760,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "393:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "374:34:82"
            },
            "returnParameters": {
              "id": 13765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13764,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13772,
                  "src": "433:7:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "433:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "432:9:82"
            },
            "scope": 13964,
            "src": "358:120:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13788,
              "nodeType": "Block",
              "src": "564:41:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13782,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13774,
                          "src": "583:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13783,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13776,
                          "src": "589:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "id": 13781,
                        "name": "indexOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13772,
                        "src": "575:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_uint256_$",
                          "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (uint256)"
                        }
                      },
                      "id": 13784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "575:21:82",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "600:1:82",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "575:26:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13780,
                  "id": 13787,
                  "nodeType": "Return",
                  "src": "568:33:82"
                }
              ]
            },
            "documentation": null,
            "id": 13789,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13774,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13789,
                  "src": "499:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13773,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "499:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13776,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13789,
                  "src": "517:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13775,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "498:34:82"
            },
            "returnParameters": {
              "id": 13780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13779,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13789,
                  "src": "557:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13778,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "556:6:82"
            },
            "scope": 13964,
            "src": "481:124:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13800,
              "nodeType": "Block",
              "src": "685:26:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 13797,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13791,
                      "src": "696:4:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                        "typeString": "struct LibSet_bytes4.set storage pointer"
                      }
                    },
                    "id": 13798,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "values",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13723,
                    "src": "696:11:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                      "typeString": "bytes4[] storage ref"
                    }
                  },
                  "functionReturnParameters": 13796,
                  "id": 13799,
                  "nodeType": "Return",
                  "src": "689:18:82"
                }
              ]
            },
            "documentation": null,
            "id": 13801,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13791,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13801,
                  "src": "625:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13790,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "625:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "624:18:82"
            },
            "returnParameters": {
              "id": 13796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13795,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13801,
                  "src": "667:15:82",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13793,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "667:6:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 13794,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "667:8:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "666:17:82"
            },
            "scope": 13964,
            "src": "608:103:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13838,
              "nodeType": "Block",
              "src": "787:147:82",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13811,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13803,
                        "src": "804:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13812,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13805,
                        "src": "810:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 13810,
                      "name": "contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13789,
                      "src": "795:8:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_bool_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (bool)"
                      }
                    },
                    "id": 13813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "795:22:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13817,
                  "nodeType": "IfStatement",
                  "src": "791:52:82",
                  "trueBody": {
                    "id": 13816,
                    "nodeType": "Block",
                    "src": "821:22:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "833:5:82",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13809,
                        "id": 13815,
                        "nodeType": "Return",
                        "src": "826:12:82"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13823,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13805,
                        "src": "863:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13818,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13803,
                          "src": "846:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13821,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "846:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "846:16:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 13824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "846:24:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13825,
                  "nodeType": "ExpressionStatement",
                  "src": "846:24:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13826,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13803,
                          "src": "874:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13829,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13727,
                        "src": "874:12:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                          "typeString": "mapping(bytes4 => uint256)"
                        }
                      },
                      "id": 13830,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13828,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13805,
                        "src": "887:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "874:20:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13831,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13803,
                          "src": "897:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13832,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "897:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "897:18:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "874:41:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13835,
                  "nodeType": "ExpressionStatement",
                  "src": "874:41:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 13836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "926:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 13809,
                  "id": 13837,
                  "nodeType": "Return",
                  "src": "919:11:82"
                }
              ]
            },
            "documentation": null,
            "id": 13839,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13803,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13839,
                  "src": "727:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13802,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "727:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13805,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13839,
                  "src": "745:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13804,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "745:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "726:34:82"
            },
            "returnParameters": {
              "id": 13809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13808,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13839,
                  "src": "780:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13807,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "779:6:82"
            },
            "scope": 13964,
            "src": "714:220:82",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13917,
              "nodeType": "Block",
              "src": "1013:340:82",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 13852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1021:23:82",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13849,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13841,
                          "src": "1031:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13850,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13843,
                          "src": "1037:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "id": 13848,
                        "name": "contains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13789,
                        "src": "1022:8:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (bool)"
                        }
                      },
                      "id": 13851,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1022:22:82",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13856,
                  "nodeType": "IfStatement",
                  "src": "1017:53:82",
                  "trueBody": {
                    "id": 13855,
                    "nodeType": "Block",
                    "src": "1048:22:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1060:5:82",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13847,
                        "id": 13854,
                        "nodeType": "Return",
                        "src": "1053:12:82"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    13858
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13858,
                      "mutability": "mutable",
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13917,
                      "src": "1074:9:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13857,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1074:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13863,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13860,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13841,
                        "src": "1097:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13861,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13843,
                        "src": "1103:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 13859,
                      "name": "indexOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13772,
                      "src": "1089:7:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_uint256_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (uint256)"
                      }
                    },
                    "id": 13862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1089:21:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1074:36:82"
                },
                {
                  "assignments": [
                    13865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13865,
                      "mutability": "mutable",
                      "name": "last",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13917,
                      "src": "1114:12:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13864,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1114:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13869,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13867,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13841,
                        "src": "1136:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      ],
                      "id": 13866,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13740,
                      "src": "1129:6:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 13868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1129:12:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1114:27:82"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13870,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13858,
                      "src": "1150:1:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 13871,
                      "name": "last",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13865,
                      "src": "1155:4:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1150:9:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13901,
                  "nodeType": "IfStatement",
                  "src": "1146:135:82",
                  "trueBody": {
                    "id": 13900,
                    "nodeType": "Block",
                    "src": "1163:118:82",
                    "statements": [
                      {
                        "assignments": [
                          13874
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13874,
                            "mutability": "mutable",
                            "name": "swapValue",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13900,
                            "src": "1168:17:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 13873,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "1168:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13881,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13875,
                              "name": "_set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13841,
                              "src": "1188:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                "typeString": "struct LibSet_bytes4.set storage pointer"
                              }
                            },
                            "id": 13876,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13723,
                            "src": "1188:11:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                              "typeString": "bytes4[] storage ref"
                            }
                          },
                          "id": 13880,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13877,
                              "name": "last",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13865,
                              "src": "1200:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 13878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1207:1:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1200:8:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1188:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1168:41:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13882,
                                "name": "_set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13841,
                                "src": "1214:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                  "typeString": "struct LibSet_bytes4.set storage pointer"
                                }
                              },
                              "id": 13887,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13723,
                              "src": "1214:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                "typeString": "bytes4[] storage ref"
                              }
                            },
                            "id": 13888,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13884,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13858,
                                "src": "1226:1:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1230:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1226:5:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1214:18:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13889,
                            "name": "swapValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13874,
                            "src": "1235:9:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1214:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 13891,
                        "nodeType": "ExpressionStatement",
                        "src": "1214:30:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13892,
                                "name": "_set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13841,
                                "src": "1249:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                  "typeString": "struct LibSet_bytes4.set storage pointer"
                                }
                              },
                              "id": 13895,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13727,
                              "src": "1249:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                                "typeString": "mapping(bytes4 => uint256)"
                              }
                            },
                            "id": 13896,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13894,
                              "name": "swapValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13874,
                              "src": "1262:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1249:23:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13897,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13858,
                            "src": "1275:1:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1249:27:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13899,
                        "nodeType": "ExpressionStatement",
                        "src": "1249:27:82"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1285:27:82",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13902,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13841,
                          "src": "1292:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13903,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13727,
                        "src": "1292:12:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                          "typeString": "mapping(bytes4 => uint256)"
                        }
                      },
                      "id": 13905,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13904,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13843,
                        "src": "1305:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1292:20:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13907,
                  "nodeType": "ExpressionStatement",
                  "src": "1285:27:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13908,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13841,
                          "src": "1316:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13911,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "1316:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pop",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1316:15:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 13913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1316:17:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13914,
                  "nodeType": "ExpressionStatement",
                  "src": "1316:17:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 13915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1345:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 13847,
                  "id": 13916,
                  "nodeType": "Return",
                  "src": "1338:11:82"
                }
              ]
            },
            "documentation": null,
            "id": 13918,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13841,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13918,
                  "src": "953:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13840,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "953:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13843,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13918,
                  "src": "971:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13842,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "971:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "952:34:82"
            },
            "returnParameters": {
              "id": 13847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13846,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13918,
                  "src": "1006:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13845,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1006:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1005:6:82"
            },
            "scope": 13964,
            "src": "937:416:82",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13962,
              "nodeType": "Block",
              "src": "1415:153:82",
              "statements": [
                {
                  "body": {
                    "id": 13948,
                    "nodeType": "Block",
                    "src": "1470:47:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "1475:37:82",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13937,
                                "name": "_set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13920,
                                "src": "1482:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                  "typeString": "struct LibSet_bytes4.set storage pointer"
                                }
                              },
                              "id": 13938,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13727,
                              "src": "1482:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                                "typeString": "mapping(bytes4 => uint256)"
                              }
                            },
                            "id": 13945,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13939,
                                  "name": "_set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13920,
                                  "src": "1495:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                    "typeString": "struct LibSet_bytes4.set storage pointer"
                                  }
                                },
                                "id": 13940,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13723,
                                "src": "1495:11:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                  "typeString": "bytes4[] storage ref"
                                }
                              },
                              "id": 13944,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 13941,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13926,
                                  "src": "1507:1:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 13942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1509:1:82",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1507:3:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1495:16:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1482:30:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13947,
                        "nodeType": "ExpressionStatement",
                        "src": "1475:37:82"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13931,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13926,
                      "src": "1456:1:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1460:1:82",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1456:5:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13949,
                  "initializationExpression": {
                    "assignments": [
                      13926
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13926,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13949,
                        "src": "1424:9:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1424:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 13930,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13927,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13920,
                          "src": "1436:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13928,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "1436:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1436:18:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1424:30:82"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 13935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "--",
                      "prefix": true,
                      "src": "1463:3:82",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 13934,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13926,
                        "src": "1465:1:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13936,
                    "nodeType": "ExpressionStatement",
                    "src": "1463:3:82"
                  },
                  "nodeType": "ForStatement",
                  "src": "1419:98:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13950,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13920,
                        "src": "1520:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13952,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13723,
                      "src": "1520:11:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                        "typeString": "bytes4[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1547:1:82",
                          "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": 13955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1534:12:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (bytes4[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13953,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1538:6:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 13954,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1538:8:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        }
                      },
                      "id": 13957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1534:15:82",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                        "typeString": "bytes4[] memory"
                      }
                    },
                    "src": "1520:29:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                      "typeString": "bytes4[] storage ref"
                    }
                  },
                  "id": 13959,
                  "nodeType": "ExpressionStatement",
                  "src": "1520:29:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 13960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1560:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 13924,
                  "id": 13961,
                  "nodeType": "Return",
                  "src": "1553:11:82"
                }
              ]
            },
            "documentation": null,
            "id": 13963,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "clear",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13920,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13963,
                  "src": "1371:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13919,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "1371:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1370:18:82"
            },
            "returnParameters": {
              "id": 13924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13923,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13963,
                  "src": "1408:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13922,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1408:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1407:6:82"
            },
            "scope": 13964,
            "src": "1356:212:82",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 13965,
        "src": "32:1538:82"
      }
    ],
    "src": "0:1571:82"
  },
  "legacyAST": {
    "absolutePath": "solstruct/contracts/libs/LibSet.bytes4.sol",
    "exportedSymbols": {
      "LibSet_bytes4": [
        13964
      ]
    },
    "id": 13965,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13720,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".0",
          "<",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:30:82"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 13964,
        "linearizedBaseContracts": [
          13964
        ],
        "name": "LibSet_bytes4",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "LibSet_bytes4.set",
            "id": 13728,
            "members": [
              {
                "constant": false,
                "id": 13723,
                "mutability": "mutable",
                "name": "values",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13728,
                "src": "73:15:82",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                  "typeString": "bytes4[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 13721,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "73:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "id": 13722,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "73:8:82",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                    "typeString": "bytes4[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13727,
                "mutability": "mutable",
                "name": "indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 13728,
                "src": "92:34:82",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                  "typeString": "mapping(bytes4 => uint256)"
                },
                "typeName": {
                  "id": 13726,
                  "keyType": {
                    "id": 13724,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "100:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "92:26:82",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                    "typeString": "mapping(bytes4 => uint256)"
                  },
                  "valueType": {
                    "id": 13725,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "110:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "set",
            "nodeType": "StructDefinition",
            "scope": 13964,
            "src": "57:73:82",
            "visibility": "public"
          },
          {
            "body": {
              "id": 13739,
              "nodeType": "Block",
              "src": "201:33:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13735,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13730,
                        "src": "212:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13736,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13723,
                      "src": "212:11:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                        "typeString": "bytes4[] storage ref"
                      }
                    },
                    "id": 13737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "212:18:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13734,
                  "id": 13738,
                  "nodeType": "Return",
                  "src": "205:25:82"
                }
              ]
            },
            "documentation": null,
            "id": 13740,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13730,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13740,
                  "src": "149:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13729,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "149:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "148:18:82"
            },
            "returnParameters": {
              "id": 13734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13733,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13740,
                  "src": "191:7:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "191:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "190:9:82"
            },
            "scope": 13964,
            "src": "133:101:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13756,
              "nodeType": "Block",
              "src": "317:38:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13749,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13742,
                        "src": "328:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13750,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13723,
                      "src": "328:11:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                        "typeString": "bytes4[] storage ref"
                      }
                    },
                    "id": 13754,
                    "indexExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13753,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 13751,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "340:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 13752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "349:1:82",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "340:10:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "328:23:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 13748,
                  "id": 13755,
                  "nodeType": "Return",
                  "src": "321:30:82"
                }
              ]
            },
            "documentation": null,
            "id": 13757,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13742,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13757,
                  "src": "249:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13741,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "249:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13744,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13757,
                  "src": "267:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13743,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "267:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "248:34:82"
            },
            "returnParameters": {
              "id": 13748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13747,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13757,
                  "src": "307:6:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13746,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "307:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "306:9:82"
            },
            "scope": 13964,
            "src": "237:118:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13771,
              "nodeType": "Block",
              "src": "443:35:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13766,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13759,
                        "src": "454:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13767,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13727,
                      "src": "454:12:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                        "typeString": "mapping(bytes4 => uint256)"
                      }
                    },
                    "id": 13769,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13768,
                      "name": "_value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13761,
                      "src": "467:6:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "454:20:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13765,
                  "id": 13770,
                  "nodeType": "Return",
                  "src": "447:27:82"
                }
              ]
            },
            "documentation": null,
            "id": 13772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "indexOf",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13759,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13772,
                  "src": "375:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13758,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "375:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13761,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13772,
                  "src": "393:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13760,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "393:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "374:34:82"
            },
            "returnParameters": {
              "id": 13765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13764,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13772,
                  "src": "433:7:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "433:7:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "432:9:82"
            },
            "scope": 13964,
            "src": "358:120:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13788,
              "nodeType": "Block",
              "src": "564:41:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13782,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13774,
                          "src": "583:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13783,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13776,
                          "src": "589:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "id": 13781,
                        "name": "indexOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13772,
                        "src": "575:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_uint256_$",
                          "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (uint256)"
                        }
                      },
                      "id": 13784,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "575:21:82",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "600:1:82",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "575:26:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13780,
                  "id": 13787,
                  "nodeType": "Return",
                  "src": "568:33:82"
                }
              ]
            },
            "documentation": null,
            "id": 13789,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13774,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13789,
                  "src": "499:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13773,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "499:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13776,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13789,
                  "src": "517:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13775,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "498:34:82"
            },
            "returnParameters": {
              "id": 13780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13779,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13789,
                  "src": "557:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13778,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "556:6:82"
            },
            "scope": 13964,
            "src": "481:124:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13800,
              "nodeType": "Block",
              "src": "685:26:82",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 13797,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13791,
                      "src": "696:4:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                        "typeString": "struct LibSet_bytes4.set storage pointer"
                      }
                    },
                    "id": 13798,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "values",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13723,
                    "src": "696:11:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                      "typeString": "bytes4[] storage ref"
                    }
                  },
                  "functionReturnParameters": 13796,
                  "id": 13799,
                  "nodeType": "Return",
                  "src": "689:18:82"
                }
              ]
            },
            "documentation": null,
            "id": 13801,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13791,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13801,
                  "src": "625:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13790,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "625:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "624:18:82"
            },
            "returnParameters": {
              "id": 13796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13795,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13801,
                  "src": "667:15:82",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13793,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "667:6:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 13794,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "667:8:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "666:17:82"
            },
            "scope": 13964,
            "src": "608:103:82",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13838,
              "nodeType": "Block",
              "src": "787:147:82",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13811,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13803,
                        "src": "804:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13812,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13805,
                        "src": "810:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 13810,
                      "name": "contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13789,
                      "src": "795:8:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_bool_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (bool)"
                      }
                    },
                    "id": 13813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "795:22:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13817,
                  "nodeType": "IfStatement",
                  "src": "791:52:82",
                  "trueBody": {
                    "id": 13816,
                    "nodeType": "Block",
                    "src": "821:22:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "833:5:82",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13809,
                        "id": 13815,
                        "nodeType": "Return",
                        "src": "826:12:82"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13823,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13805,
                        "src": "863:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13818,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13803,
                          "src": "846:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13821,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "846:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "846:16:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 13824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "846:24:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13825,
                  "nodeType": "ExpressionStatement",
                  "src": "846:24:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13826,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13803,
                          "src": "874:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13829,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13727,
                        "src": "874:12:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                          "typeString": "mapping(bytes4 => uint256)"
                        }
                      },
                      "id": 13830,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13828,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13805,
                        "src": "887:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "874:20:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13831,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13803,
                          "src": "897:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13832,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "897:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13833,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "897:18:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "874:41:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13835,
                  "nodeType": "ExpressionStatement",
                  "src": "874:41:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 13836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "926:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 13809,
                  "id": 13837,
                  "nodeType": "Return",
                  "src": "919:11:82"
                }
              ]
            },
            "documentation": null,
            "id": 13839,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13803,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13839,
                  "src": "727:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13802,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "727:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13805,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13839,
                  "src": "745:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13804,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "745:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "726:34:82"
            },
            "returnParameters": {
              "id": 13809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13808,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13839,
                  "src": "780:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13807,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "779:6:82"
            },
            "scope": 13964,
            "src": "714:220:82",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13917,
              "nodeType": "Block",
              "src": "1013:340:82",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 13852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1021:23:82",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 13849,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13841,
                          "src": "1031:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13850,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13843,
                          "src": "1037:6:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "id": 13848,
                        "name": "contains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13789,
                        "src": "1022:8:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (bool)"
                        }
                      },
                      "id": 13851,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1022:22:82",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13856,
                  "nodeType": "IfStatement",
                  "src": "1017:53:82",
                  "trueBody": {
                    "id": 13855,
                    "nodeType": "Block",
                    "src": "1048:22:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 13853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1060:5:82",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 13847,
                        "id": 13854,
                        "nodeType": "Return",
                        "src": "1053:12:82"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    13858
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13858,
                      "mutability": "mutable",
                      "name": "i",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13917,
                      "src": "1074:9:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13857,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1074:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13863,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13860,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13841,
                        "src": "1097:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13861,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13843,
                        "src": "1103:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 13859,
                      "name": "indexOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13772,
                      "src": "1089:7:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$_t_bytes4_$returns$_t_uint256_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer,bytes4) view returns (uint256)"
                      }
                    },
                    "id": 13862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1089:21:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1074:36:82"
                },
                {
                  "assignments": [
                    13865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13865,
                      "mutability": "mutable",
                      "name": "last",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 13917,
                      "src": "1114:12:82",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13864,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1114:7:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13869,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13867,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13841,
                        "src": "1136:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      ],
                      "id": 13866,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13740,
                      "src": "1129:6:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_set_$13728_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct LibSet_bytes4.set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 13868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1129:12:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1114:27:82"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13870,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13858,
                      "src": "1150:1:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 13871,
                      "name": "last",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13865,
                      "src": "1155:4:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1150:9:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13901,
                  "nodeType": "IfStatement",
                  "src": "1146:135:82",
                  "trueBody": {
                    "id": 13900,
                    "nodeType": "Block",
                    "src": "1163:118:82",
                    "statements": [
                      {
                        "assignments": [
                          13874
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13874,
                            "mutability": "mutable",
                            "name": "swapValue",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 13900,
                            "src": "1168:17:82",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 13873,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "1168:6:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13881,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13875,
                              "name": "_set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13841,
                              "src": "1188:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                "typeString": "struct LibSet_bytes4.set storage pointer"
                              }
                            },
                            "id": 13876,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "values",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13723,
                            "src": "1188:11:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                              "typeString": "bytes4[] storage ref"
                            }
                          },
                          "id": 13880,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 13877,
                              "name": "last",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13865,
                              "src": "1200:4:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 13878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1207:1:82",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1200:8:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1188:21:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1168:41:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13882,
                                "name": "_set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13841,
                                "src": "1214:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                  "typeString": "struct LibSet_bytes4.set storage pointer"
                                }
                              },
                              "id": 13887,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13723,
                              "src": "1214:11:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                "typeString": "bytes4[] storage ref"
                              }
                            },
                            "id": 13888,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 13884,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13858,
                                "src": "1226:1:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1230:1:82",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1226:5:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1214:18:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13889,
                            "name": "swapValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13874,
                            "src": "1235:9:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "1214:30:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 13891,
                        "nodeType": "ExpressionStatement",
                        "src": "1214:30:82"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13892,
                                "name": "_set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13841,
                                "src": "1249:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                  "typeString": "struct LibSet_bytes4.set storage pointer"
                                }
                              },
                              "id": 13895,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13727,
                              "src": "1249:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                                "typeString": "mapping(bytes4 => uint256)"
                              }
                            },
                            "id": 13896,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13894,
                              "name": "swapValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13874,
                              "src": "1262:9:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1249:23:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13897,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13858,
                            "src": "1275:1:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1249:27:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13899,
                        "nodeType": "ExpressionStatement",
                        "src": "1249:27:82"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1285:27:82",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13902,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13841,
                          "src": "1292:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13903,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13727,
                        "src": "1292:12:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                          "typeString": "mapping(bytes4 => uint256)"
                        }
                      },
                      "id": 13905,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13904,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13843,
                        "src": "1305:6:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1292:20:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13907,
                  "nodeType": "ExpressionStatement",
                  "src": "1285:27:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13908,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13841,
                          "src": "1316:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13911,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "1316:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pop",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1316:15:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 13913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1316:17:82",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13914,
                  "nodeType": "ExpressionStatement",
                  "src": "1316:17:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 13915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1345:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 13847,
                  "id": 13916,
                  "nodeType": "Return",
                  "src": "1338:11:82"
                }
              ]
            },
            "documentation": null,
            "id": 13918,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13841,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13918,
                  "src": "953:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13840,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "953:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13843,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13918,
                  "src": "971:14:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13842,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "971:6:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "952:34:82"
            },
            "returnParameters": {
              "id": 13847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13846,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13918,
                  "src": "1006:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13845,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1006:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1005:6:82"
            },
            "scope": 13964,
            "src": "937:416:82",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13962,
              "nodeType": "Block",
              "src": "1415:153:82",
              "statements": [
                {
                  "body": {
                    "id": 13948,
                    "nodeType": "Block",
                    "src": "1470:47:82",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "1475:37:82",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13937,
                                "name": "_set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13920,
                                "src": "1482:4:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                  "typeString": "struct LibSet_bytes4.set storage pointer"
                                }
                              },
                              "id": 13938,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13727,
                              "src": "1482:12:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_uint256_$",
                                "typeString": "mapping(bytes4 => uint256)"
                              }
                            },
                            "id": 13945,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13939,
                                  "name": "_set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13920,
                                  "src": "1495:4:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                                    "typeString": "struct LibSet_bytes4.set storage pointer"
                                  }
                                },
                                "id": 13940,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13723,
                                "src": "1495:11:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                                  "typeString": "bytes4[] storage ref"
                                }
                              },
                              "id": 13944,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 13941,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13926,
                                  "src": "1507:1:82",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 13942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1509:1:82",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1507:3:82",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1495:16:82",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1482:30:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13947,
                        "nodeType": "ExpressionStatement",
                        "src": "1475:37:82"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13931,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13926,
                      "src": "1456:1:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1460:1:82",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1456:5:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13949,
                  "initializationExpression": {
                    "assignments": [
                      13926
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13926,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13949,
                        "src": "1424:9:82",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1424:7:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 13930,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13927,
                          "name": "_set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13920,
                          "src": "1436:4:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                            "typeString": "struct LibSet_bytes4.set storage pointer"
                          }
                        },
                        "id": 13928,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13723,
                        "src": "1436:11:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                          "typeString": "bytes4[] storage ref"
                        }
                      },
                      "id": 13929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1436:18:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1424:30:82"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 13935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "--",
                      "prefix": true,
                      "src": "1463:3:82",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 13934,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13926,
                        "src": "1465:1:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13936,
                    "nodeType": "ExpressionStatement",
                    "src": "1463:3:82"
                  },
                  "nodeType": "ForStatement",
                  "src": "1419:98:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13950,
                        "name": "_set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13920,
                        "src": "1520:4:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                          "typeString": "struct LibSet_bytes4.set storage pointer"
                        }
                      },
                      "id": 13952,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13723,
                      "src": "1520:11:82",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                        "typeString": "bytes4[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1547:1:82",
                          "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": 13955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1534:12:82",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (bytes4[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13953,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1538:6:82",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "id": 13954,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1538:8:82",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                            "typeString": "bytes4[]"
                          }
                        }
                      },
                      "id": 13957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1534:15:82",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                        "typeString": "bytes4[] memory"
                      }
                    },
                    "src": "1520:29:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage",
                      "typeString": "bytes4[] storage ref"
                    }
                  },
                  "id": 13959,
                  "nodeType": "ExpressionStatement",
                  "src": "1520:29:82"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 13960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1560:4:82",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 13924,
                  "id": 13961,
                  "nodeType": "Return",
                  "src": "1553:11:82"
                }
              ]
            },
            "documentation": null,
            "id": 13963,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "clear",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 13921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13920,
                  "mutability": "mutable",
                  "name": "_set",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13963,
                  "src": "1371:16:82",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                    "typeString": "struct LibSet_bytes4.set"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 13919,
                    "name": "set",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13728,
                    "src": "1371:3:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_set_$13728_storage_ptr",
                      "typeString": "struct LibSet_bytes4.set"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1370:18:82"
            },
            "returnParameters": {
              "id": 13924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13923,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 13963,
                  "src": "1408:4:82",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13922,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1408:4:82",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1407:6:82"
            },
            "scope": 13964,
            "src": "1356:212:82",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 13965,
        "src": "32:1538:82"
      }
    ],
    "src": "0:1571:82"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.6+commit.6c089d02.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.1.0",
  "updatedAt": "2020-04-21T18:10:34.978Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}