content: {-# LANGUAGE CPP #-}
  module Test.E.Arbitrary where
  import Test.Tasty.QuickCheck
  import           Test.E
  
  -- GENERATED START
  
  instance () => Arbitrary E2 where
      arbitrary
        = do x <- choose (0 :: Int, 1)
             case x of
                 0 -> return E2_1
                 1 -> return E2_2
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E3 where
      arbitrary
        = do x <- choose (0 :: Int, 2)
             case x of
                 0 -> return E3_1
                 1 -> return E3_2
                 2 -> return E3_3
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E4 where
      arbitrary
        = do x <- choose (0 :: Int, 3)
             case x of
                 0 -> return E4_1
                 1 -> return E4_2
                 2 -> return E4_3
                 3 -> return E4_4
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E8 where
      arbitrary
        = do x <- choose (0 :: Int, 7)
             case x of
                 0 -> return E8_1
                 1 -> return E8_2
                 2 -> return E8_3
                 3 -> return E8_4
                 4 -> return E8_5
                 5 -> return E8_6
                 6 -> return E8_7
                 7 -> return E8_8
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E16 where
      arbitrary
        = do x <- choose (0 :: Int, 15)
             case x of
                 0 -> return E16_1
                 1 -> return E16_2
                 2 -> return E16_3
                 3 -> return E16_4
                 4 -> return E16_5
                 5 -> return E16_6
                 6 -> return E16_7
                 7 -> return E16_8
                 8 -> return E16_9
                 9 -> return E16_10
                 10 -> return E16_11
                 11 -> return E16_12
                 12 -> return E16_13
                 13 -> return E16_14
                 14 -> return E16_15
                 15 -> return E16_16
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E17 where
      arbitrary
        = do x <- choose (0 :: Int, 16)
             case x of
                 0 -> return E17_1
                 1 -> return E17_2
                 2 -> return E17_3
                 3 -> return E17_4
                 4 -> return E17_5
                 5 -> return E17_6
                 6 -> return E17_7
                 7 -> return E17_8
                 8 -> return E17_9
                 9 -> return E17_10
                 10 -> return E17_11
                 11 -> return E17_12
                 12 -> return E17_13
                 13 -> return E17_14
                 14 -> return E17_15
                 15 -> return E17_16
                 16 -> return E17_17
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E32 where
      arbitrary
        = do x <- choose (0 :: Int, 31)
             case x of
                 0 -> return E32_1
                 1 -> return E32_2
                 2 -> return E32_3
                 3 -> return E32_4
                 4 -> return E32_5
                 5 -> return E32_6
                 6 -> return E32_7
                 7 -> return E32_8
                 8 -> return E32_9
                 9 -> return E32_10
                 10 -> return E32_11
                 11 -> return E32_12
                 12 -> return E32_13
                 13 -> return E32_14
                 14 -> return E32_15
                 15 -> return E32_16
                 16 -> return E32_17
                 17 -> return E32_18
                 18 -> return E32_19
                 19 -> return E32_20
                 20 -> return E32_21
                 21 -> return E32_22
                 22 -> return E32_23
                 23 -> return E32_24
                 24 -> return E32_25
                 25 -> return E32_26
                 26 -> return E32_27
                 27 -> return E32_28
                 28 -> return E32_29
                 29 -> return E32_30
                 30 -> return E32_31
                 31 -> return E32_32
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  #ifdef ENUM_LARGE
  instance () => Arbitrary E256 where
      arbitrary
        = do x <- choose (0 :: Int, 255)
             case x of
                 0 -> return E256_1
                 1 -> return E256_2
                 2 -> return E256_3
                 3 -> return E256_4
                 4 -> return E256_5
                 5 -> return E256_6
                 6 -> return E256_7
                 7 -> return E256_8
                 8 -> return E256_9
                 9 -> return E256_10
                 10 -> return E256_11
                 11 -> return E256_12
                 12 -> return E256_13
                 13 -> return E256_14
                 14 -> return E256_15
                 15 -> return E256_16
                 16 -> return E256_17
                 17 -> return E256_18
                 18 -> return E256_19
                 19 -> return E256_20
                 20 -> return E256_21
                 21 -> return E256_22
                 22 -> return E256_23
                 23 -> return E256_24
                 24 -> return E256_25
                 25 -> return E256_26
                 26 -> return E256_27
                 27 -> return E256_28
                 28 -> return E256_29
                 29 -> return E256_30
                 30 -> return E256_31
                 31 -> return E256_32
                 32 -> return E256_33
                 33 -> return E256_34
                 34 -> return E256_35
                 35 -> return E256_36
                 36 -> return E256_37
                 37 -> return E256_38
                 38 -> return E256_39
                 39 -> return E256_40
                 40 -> return E256_41
                 41 -> return E256_42
                 42 -> return E256_43
                 43 -> return E256_44
                 44 -> return E256_45
                 45 -> return E256_46
                 46 -> return E256_47
                 47 -> return E256_48
                 48 -> return E256_49
                 49 -> return E256_50
                 50 -> return E256_51
                 51 -> return E256_52
                 52 -> return E256_53
                 53 -> return E256_54
                 54 -> return E256_55
                 55 -> return E256_56
                 56 -> return E256_57
                 57 -> return E256_58
                 58 -> return E256_59
                 59 -> return E256_60
                 60 -> return E256_61
                 61 -> return E256_62
                 62 -> return E256_63
                 63 -> return E256_64
                 64 -> return E256_65
                 65 -> return E256_66
                 66 -> return E256_67
                 67 -> return E256_68
                 68 -> return E256_69
                 69 -> return E256_70
                 70 -> return E256_71
                 71 -> return E256_72
                 72 -> return E256_73
                 73 -> return E256_74
                 74 -> return E256_75
                 75 -> return E256_76
                 76 -> return E256_77
                 77 -> return E256_78
                 78 -> return E256_79
                 79 -> return E256_80
                 80 -> return E256_81
                 81 -> return E256_82
                 82 -> return E256_83
                 83 -> return E256_84
                 84 -> return E256_85
                 85 -> return E256_86
                 86 -> return E256_87
                 87 -> return E256_88
                 88 -> return E256_89
                 89 -> return E256_90
                 90 -> return E256_91
                 91 -> return E256_92
                 92 -> return E256_93
                 93 -> return E256_94
                 94 -> return E256_95
                 95 -> return E256_96
                 96 -> return E256_97
                 97 -> return E256_98
                 98 -> return E256_99
                 99 -> return E256_100
                 100 -> return E256_101
                 101 -> return E256_102
                 102 -> return E256_103
                 103 -> return E256_104
                 104 -> return E256_105
                 105 -> return E256_106
                 106 -> return E256_107
                 107 -> return E256_108
                 108 -> return E256_109
                 109 -> return E256_110
                 110 -> return E256_111
                 111 -> return E256_112
                 112 -> return E256_113
                 113 -> return E256_114
                 114 -> return E256_115
                 115 -> return E256_116
                 116 -> return E256_117
                 117 -> return E256_118
                 118 -> return E256_119
                 119 -> return E256_120
                 120 -> return E256_121
                 121 -> return E256_122
                 122 -> return E256_123
                 123 -> return E256_124
                 124 -> return E256_125
                 125 -> return E256_126
                 126 -> return E256_127
                 127 -> return E256_128
                 128 -> return E256_129
                 129 -> return E256_130
                 130 -> return E256_131
                 131 -> return E256_132
                 132 -> return E256_133
                 133 -> return E256_134
                 134 -> return E256_135
                 135 -> return E256_136
                 136 -> return E256_137
                 137 -> return E256_138
                 138 -> return E256_139
                 139 -> return E256_140
                 140 -> return E256_141
                 141 -> return E256_142
                 142 -> return E256_143
                 143 -> return E256_144
                 144 -> return E256_145
                 145 -> return E256_146
                 146 -> return E256_147
                 147 -> return E256_148
                 148 -> return E256_149
                 149 -> return E256_150
                 150 -> return E256_151
                 151 -> return E256_152
                 152 -> return E256_153
                 153 -> return E256_154
                 154 -> return E256_155
                 155 -> return E256_156
                 156 -> return E256_157
                 157 -> return E256_158
                 158 -> return E256_159
                 159 -> return E256_160
                 160 -> return E256_161
                 161 -> return E256_162
                 162 -> return E256_163
                 163 -> return E256_164
                 164 -> return E256_165
                 165 -> return E256_166
                 166 -> return E256_167
                 167 -> return E256_168
                 168 -> return E256_169
                 169 -> return E256_170
                 170 -> return E256_171
                 171 -> return E256_172
                 172 -> return E256_173
                 173 -> return E256_174
                 174 -> return E256_175
                 175 -> return E256_176
                 176 -> return E256_177
                 177 -> return E256_178
                 178 -> return E256_179
                 179 -> return E256_180
                 180 -> return E256_181
                 181 -> return E256_182
                 182 -> return E256_183
                 183 -> return E256_184
                 184 -> return E256_185
                 185 -> return E256_186
                 186 -> return E256_187
                 187 -> return E256_188
                 188 -> return E256_189
                 189 -> return E256_190
                 190 -> return E256_191
                 191 -> return E256_192
                 192 -> return E256_193
                 193 -> return E256_194
                 194 -> return E256_195
                 195 -> return E256_196
                 196 -> return E256_197
                 197 -> return E256_198
                 198 -> return E256_199
                 199 -> return E256_200
                 200 -> return E256_201
                 201 -> return E256_202
                 202 -> return E256_203
                 203 -> return E256_204
                 204 -> return E256_205
                 205 -> return E256_206
                 206 -> return E256_207
                 207 -> return E256_208
                 208 -> return E256_209
                 209 -> return E256_210
                 210 -> return E256_211
                 211 -> return E256_212
                 212 -> return E256_213
                 213 -> return E256_214
                 214 -> return E256_215
                 215 -> return E256_216
                 216 -> return E256_217
                 217 -> return E256_218
                 218 -> return E256_219
                 219 -> return E256_220
                 220 -> return E256_221
                 221 -> return E256_222
                 222 -> return E256_223
                 223 -> return E256_224
                 224 -> return E256_225
                 225 -> return E256_226
                 226 -> return E256_227
                 227 -> return E256_228
                 228 -> return E256_229
                 229 -> return E256_230
                 230 -> return E256_231
                 231 -> return E256_232
                 232 -> return E256_233
                 233 -> return E256_234
                 234 -> return E256_235
                 235 -> return E256_236
                 236 -> return E256_237
                 237 -> return E256_238
                 238 -> return E256_239
                 239 -> return E256_240
                 240 -> return E256_241
                 241 -> return E256_242
                 242 -> return E256_243
                 243 -> return E256_244
                 244 -> return E256_245
                 245 -> return E256_246
                 246 -> return E256_247
                 247 -> return E256_248
                 248 -> return E256_249
                 249 -> return E256_250
                 250 -> return E256_251
                 251 -> return E256_252
                 252 -> return E256_253
                 253 -> return E256_254
                 254 -> return E256_255
                 255 -> return E256_256
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  
  instance () => Arbitrary E258 where
      arbitrary
        = do x <- choose (0 :: Int, 257)
             case x of
                 0 -> return E258_1
                 1 -> return E258_2
                 2 -> return E258_3
                 3 -> return E258_4
                 4 -> return E258_5
                 5 -> return E258_6
                 6 -> return E258_7
                 7 -> return E258_8
                 8 -> return E258_9
                 9 -> return E258_10
                 10 -> return E258_11
                 11 -> return E258_12
                 12 -> return E258_13
                 13 -> return E258_14
                 14 -> return E258_15
                 15 -> return E258_16
                 16 -> return E258_17
                 17 -> return E258_18
                 18 -> return E258_19
                 19 -> return E258_20
                 20 -> return E258_21
                 21 -> return E258_22
                 22 -> return E258_23
                 23 -> return E258_24
                 24 -> return E258_25
                 25 -> return E258_26
                 26 -> return E258_27
                 27 -> return E258_28
                 28 -> return E258_29
                 29 -> return E258_30
                 30 -> return E258_31
                 31 -> return E258_32
                 32 -> return E258_33
                 33 -> return E258_34
                 34 -> return E258_35
                 35 -> return E258_36
                 36 -> return E258_37
                 37 -> return E258_38
                 38 -> return E258_39
                 39 -> return E258_40
                 40 -> return E258_41
                 41 -> return E258_42
                 42 -> return E258_43
                 43 -> return E258_44
                 44 -> return E258_45
                 45 -> return E258_46
                 46 -> return E258_47
                 47 -> return E258_48
                 48 -> return E258_49
                 49 -> return E258_50
                 50 -> return E258_51
                 51 -> return E258_52
                 52 -> return E258_53
                 53 -> return E258_54
                 54 -> return E258_55
                 55 -> return E258_56
                 56 -> return E258_57
                 57 -> return E258_58
                 58 -> return E258_59
                 59 -> return E258_60
                 60 -> return E258_61
                 61 -> return E258_62
                 62 -> return E258_63
                 63 -> return E258_64
                 64 -> return E258_65
                 65 -> return E258_66
                 66 -> return E258_67
                 67 -> return E258_68
                 68 -> return E258_69
                 69 -> return E258_70
                 70 -> return E258_71
                 71 -> return E258_72
                 72 -> return E258_73
                 73 -> return E258_74
                 74 -> return E258_75
                 75 -> return E258_76
                 76 -> return E258_77
                 77 -> return E258_78
                 78 -> return E258_79
                 79 -> return E258_80
                 80 -> return E258_81
                 81 -> return E258_82
                 82 -> return E258_83
                 83 -> return E258_84
                 84 -> return E258_85
                 85 -> return E258_86
                 86 -> return E258_87
                 87 -> return E258_88
                 88 -> return E258_89
                 89 -> return E258_90
                 90 -> return E258_91
                 91 -> return E258_92
                 92 -> return E258_93
                 93 -> return E258_94
                 94 -> return E258_95
                 95 -> return E258_96
                 96 -> return E258_97
                 97 -> return E258_98
                 98 -> return E258_99
                 99 -> return E258_100
                 100 -> return E258_101
                 101 -> return E258_102
                 102 -> return E258_103
                 103 -> return E258_104
                 104 -> return E258_105
                 105 -> return E258_106
                 106 -> return E258_107
                 107 -> return E258_108
                 108 -> return E258_109
                 109 -> return E258_110
                 110 -> return E258_111
                 111 -> return E258_112
                 112 -> return E258_113
                 113 -> return E258_114
                 114 -> return E258_115
                 115 -> return E258_116
                 116 -> return E258_117
                 117 -> return E258_118
                 118 -> return E258_119
                 119 -> return E258_120
                 120 -> return E258_121
                 121 -> return E258_122
                 122 -> return E258_123
                 123 -> return E258_124
                 124 -> return E258_125
                 125 -> return E258_126
                 126 -> return E258_127
                 127 -> return E258_128
                 128 -> return E258_129
                 129 -> return E258_130
                 130 -> return E258_131
                 131 -> return E258_132
                 132 -> return E258_133
                 133 -> return E258_134
                 134 -> return E258_135
                 135 -> return E258_136
                 136 -> return E258_137
                 137 -> return E258_138
                 138 -> return E258_139
                 139 -> return E258_140
                 140 -> return E258_141
                 141 -> return E258_142
                 142 -> return E258_143
                 143 -> return E258_144
                 144 -> return E258_145
                 145 -> return E258_146
                 146 -> return E258_147
                 147 -> return E258_148
                 148 -> return E258_149
                 149 -> return E258_150
                 150 -> return E258_151
                 151 -> return E258_152
                 152 -> return E258_153
                 153 -> return E258_154
                 154 -> return E258_155
                 155 -> return E258_156
                 156 -> return E258_157
                 157 -> return E258_158
                 158 -> return E258_159
                 159 -> return E258_160
                 160 -> return E258_161
                 161 -> return E258_162
                 162 -> return E258_163
                 163 -> return E258_164
                 164 -> return E258_165
                 165 -> return E258_166
                 166 -> return E258_167
                 167 -> return E258_168
                 168 -> return E258_169
                 169 -> return E258_170
                 170 -> return E258_171
                 171 -> return E258_172
                 172 -> return E258_173
                 173 -> return E258_174
                 174 -> return E258_175
                 175 -> return E258_176
                 176 -> return E258_177
                 177 -> return E258_178
                 178 -> return E258_179
                 179 -> return E258_180
                 180 -> return E258_181
                 181 -> return E258_182
                 182 -> return E258_183
                 183 -> return E258_184
                 184 -> return E258_185
                 185 -> return E258_186
                 186 -> return E258_187
                 187 -> return E258_188
                 188 -> return E258_189
                 189 -> return E258_190
                 190 -> return E258_191
                 191 -> return E258_192
                 192 -> return E258_193
                 193 -> return E258_194
                 194 -> return E258_195
                 195 -> return E258_196
                 196 -> return E258_197
                 197 -> return E258_198
                 198 -> return E258_199
                 199 -> return E258_200
                 200 -> return E258_201
                 201 -> return E258_202
                 202 -> return E258_203
                 203 -> return E258_204
                 204 -> return E258_205
                 205 -> return E258_206
                 206 -> return E258_207
                 207 -> return E258_208
                 208 -> return E258_209
                 209 -> return E258_210
                 210 -> return E258_211
                 211 -> return E258_212
                 212 -> return E258_213
                 213 -> return E258_214
                 214 -> return E258_215
                 215 -> return E258_216
                 216 -> return E258_217
                 217 -> return E258_218
                 218 -> return E258_219
                 219 -> return E258_220
                 220 -> return E258_221
                 221 -> return E258_222
                 222 -> return E258_223
                 223 -> return E258_224
                 224 -> return E258_225
                 225 -> return E258_226
                 226 -> return E258_227
                 227 -> return E258_228
                 228 -> return E258_229
                 229 -> return E258_230
                 230 -> return E258_231
                 231 -> return E258_232
                 232 -> return E258_233
                 233 -> return E258_234
                 234 -> return E258_235
                 235 -> return E258_236
                 236 -> return E258_237
                 237 -> return E258_238
                 238 -> return E258_239
                 239 -> return E258_240
                 240 -> return E258_241
                 241 -> return E258_242
                 242 -> return E258_243
                 243 -> return E258_244
                 244 -> return E258_245
                 245 -> return E258_246
                 246 -> return E258_247
                 247 -> return E258_248
                 248 -> return E258_249
                 249 -> return E258_250
                 250 -> return E258_251
                 251 -> return E258_252
                 252 -> return E258_253
                 253 -> return E258_254
                 254 -> return E258_255
                 255 -> return E258_256
                 256 -> return E258_257
                 257 -> return E258_258
                 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
  -- GENERATED STOP
  #endif