// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.codec.schema.config;

import com.hypixel.hytale.codec.schema.SchemaContext;
import com.hypixel.hytale.codec.ExtraInfo;
import org.bson.BsonValue;
import com.hypixel.hytale.codec.Codec;
import javax.annotation.Nonnull;
import java.util.Arrays;
import javax.annotation.Nullable;
import com.hypixel.hytale.codec.builder.BuilderCodec;

public class NumberSchema extends Schema
{
    public static final BuilderCodec<NumberSchema> CODEC;
    private Object minimum;
    private Object exclusiveMinimum;
    private Object maximum;
    private Object exclusiveMaximum;
    private double[] enum_;
    private Double const_;
    private Double default_;
    
    @Nullable
    public Object getMinimum() {
        return this.minimum;
    }
    
    public void setMinimum(final double minimum) {
        this.minimum = minimum;
    }
    
    @Nullable
    public Object getExclusiveMinimum() {
        return this.exclusiveMinimum;
    }
    
    public void setExclusiveMinimum(final double exclusiveMinimum) {
        this.exclusiveMinimum = exclusiveMinimum;
    }
    
    @Nullable
    public Object getMaximum() {
        return this.maximum;
    }
    
    public void setMaximum(final double maximum) {
        this.maximum = maximum;
    }
    
    @Nullable
    public Object getExclusiveMaximum() {
        return this.exclusiveMaximum;
    }
    
    public void setExclusiveMaximum(final double exclusiveMaximum) {
        this.exclusiveMaximum = exclusiveMaximum;
    }
    
    public void setMinimum(final Schema minimum) {
        this.minimum = minimum;
    }
    
    public void setExclusiveMinimum(final Schema exclusiveMinimum) {
        this.exclusiveMinimum = exclusiveMinimum;
    }
    
    public void setMaximum(final Schema maximum) {
        this.maximum = maximum;
    }
    
    public void setExclusiveMaximum(final Schema exclusiveMaximum) {
        this.exclusiveMaximum = exclusiveMaximum;
    }
    
    public double[] getEnum() {
        return this.enum_;
    }
    
    public void setEnum(final double[] enum_) {
        this.enum_ = enum_;
    }
    
    @Nullable
    public Double getConst() {
        return this.const_;
    }
    
    public void setConst(final Double const_) {
        this.const_ = const_;
    }
    
    public Double getDefault() {
        return this.default_;
    }
    
    public void setDefault(final Double default_) {
        this.default_ = default_;
    }
    
    @Override
    public boolean equals(@Nullable final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }
        if (!super.equals(o)) {
            return false;
        }
        final NumberSchema that = (NumberSchema)o;
        Label_0072: {
            if (this.minimum != null) {
                if (this.minimum.equals(that.minimum)) {
                    break Label_0072;
                }
            }
            else if (that.minimum == null) {
                break Label_0072;
            }
            return false;
        }
        Label_0105: {
            if (this.exclusiveMinimum != null) {
                if (this.exclusiveMinimum.equals(that.exclusiveMinimum)) {
                    break Label_0105;
                }
            }
            else if (that.exclusiveMinimum == null) {
                break Label_0105;
            }
            return false;
        }
        Label_0138: {
            if (this.maximum != null) {
                if (this.maximum.equals(that.maximum)) {
                    break Label_0138;
                }
            }
            else if (that.maximum == null) {
                break Label_0138;
            }
            return false;
        }
        Label_0171: {
            if (this.exclusiveMaximum != null) {
                if (this.exclusiveMaximum.equals(that.exclusiveMaximum)) {
                    break Label_0171;
                }
            }
            else if (that.exclusiveMaximum == null) {
                break Label_0171;
            }
            return false;
        }
        if (!Arrays.equals(this.enum_, that.enum_)) {
            return false;
        }
        if (this.const_ != null) {
            if (this.const_.equals(that.const_)) {
                return (this.default_ != null) ? this.default_.equals(that.default_) : (that.default_ == null);
            }
        }
        else if (that.const_ == null) {
            return (this.default_ != null) ? this.default_.equals(that.default_) : (that.default_ == null);
        }
        return false;
    }
    
    @Override
    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + ((this.minimum != null) ? this.minimum.hashCode() : 0);
        result = 31 * result + ((this.exclusiveMinimum != null) ? this.exclusiveMinimum.hashCode() : 0);
        result = 31 * result + ((this.maximum != null) ? this.maximum.hashCode() : 0);
        result = 31 * result + ((this.exclusiveMaximum != null) ? this.exclusiveMaximum.hashCode() : 0);
        result = 31 * result + Arrays.hashCode(this.enum_);
        result = 31 * result + ((this.const_ != null) ? this.const_.hashCode() : 0);
        result = 31 * result + ((this.default_ != null) ? this.default_.hashCode() : 0);
        return result;
    }
    
    @Nonnull
    public static Schema constant(final double c) {
        final NumberSchema s = new NumberSchema();
        s.setConst(c);
        return s;
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     2: invokedynamic   BootstrapMethod #0, get:()Ljava/util/function/Supplier;
        //     7: getstatic       com/hypixel/hytale/codec/schema/config/Schema.BASE_CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //    10: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;Lcom/hypixel/hytale/codec/builder/BuilderCodec;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    13: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    16: dup            
        //    17: ldc             "minimum"
        //    19: getstatic       com/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema.INSTANCE:Lcom/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema;
        //    22: iconst_0       
        //    23: iconst_1       
        //    24: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //    27: invokedynamic   BootstrapMethod #1, accept:()Ljava/util/function/BiConsumer;
        //    32: invokedynamic   BootstrapMethod #2, apply:()Ljava/util/function/Function;
        //    37: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    40: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    43: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    46: dup            
        //    47: ldc             "exclusiveMinimum"
        //    49: getstatic       com/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema.INSTANCE:Lcom/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema;
        //    52: iconst_0       
        //    53: iconst_1       
        //    54: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //    57: invokedynamic   BootstrapMethod #3, accept:()Ljava/util/function/BiConsumer;
        //    62: invokedynamic   BootstrapMethod #4, apply:()Ljava/util/function/Function;
        //    67: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    70: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    73: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    76: dup            
        //    77: ldc             "maximum"
        //    79: getstatic       com/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema.INSTANCE:Lcom/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema;
        //    82: iconst_0       
        //    83: iconst_1       
        //    84: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //    87: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
        //    92: invokedynamic   BootstrapMethod #6, apply:()Ljava/util/function/Function;
        //    97: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   100: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   103: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   106: dup            
        //   107: ldc             "exclusiveMaximum"
        //   109: getstatic       com/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema.INSTANCE:Lcom/hypixel/hytale/codec/schema/config/NumberSchema$DoubleOrSchema;
        //   112: iconst_0       
        //   113: iconst_1       
        //   114: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   117: invokedynamic   BootstrapMethod #7, accept:()Ljava/util/function/BiConsumer;
        //   122: invokedynamic   BootstrapMethod #8, apply:()Ljava/util/function/Function;
        //   127: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   130: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   133: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   136: dup            
        //   137: ldc             "enum"
        //   139: getstatic       com/hypixel/hytale/codec/Codec.DOUBLE_ARRAY:Lcom/hypixel/hytale/codec/codecs/array/DoubleArrayCodec;
        //   142: iconst_0       
        //   143: iconst_1       
        //   144: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   147: invokedynamic   BootstrapMethod #9, accept:()Ljava/util/function/BiConsumer;
        //   152: invokedynamic   BootstrapMethod #10, apply:()Ljava/util/function/Function;
        //   157: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   160: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   163: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   166: dup            
        //   167: ldc             "const"
        //   169: getstatic       com/hypixel/hytale/codec/Codec.DOUBLE:Lcom/hypixel/hytale/codec/codecs/simple/DoubleCodec;
        //   172: iconst_0       
        //   173: iconst_1       
        //   174: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   177: invokedynamic   BootstrapMethod #11, accept:()Ljava/util/function/BiConsumer;
        //   182: invokedynamic   BootstrapMethod #12, apply:()Ljava/util/function/Function;
        //   187: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   190: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   193: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   196: dup            
        //   197: ldc             "default"
        //   199: getstatic       com/hypixel/hytale/codec/Codec.DOUBLE:Lcom/hypixel/hytale/codec/codecs/simple/DoubleCodec;
        //   202: iconst_0       
        //   203: iconst_1       
        //   204: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   207: invokedynamic   BootstrapMethod #13, accept:()Ljava/util/function/BiConsumer;
        //   212: invokedynamic   BootstrapMethod #14, apply:()Ljava/util/function/Function;
        //   217: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.addField:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   220: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   223: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   226: putstatic       com/hypixel/hytale/codec/schema/config/NumberSchema.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   229: return         
        // 
        // The error that occurred was:
        // 
        // java.lang.UnsupportedOperationException: The requested operation is not supported.
        //     at com.strobel.util.ContractUtils.unsupported(ContractUtils.java:27)
        //     at com.strobel.assembler.metadata.TypeReference.getRawType(TypeReference.java:284)
        //     at com.strobel.assembler.metadata.TypeReference.getRawType(TypeReference.java:279)
        //     at com.strobel.assembler.metadata.TypeReference.makeGenericType(TypeReference.java:154)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitClassType(TypeSubstitutionVisitor.java:267)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitClassType(TypeSubstitutionVisitor.java:25)
        //     at com.strobel.assembler.metadata.TypeDefinition.accept(TypeDefinition.java:189)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitMethod(TypeSubstitutionVisitor.java:324)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2586)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2483)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1083)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:684)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:667)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:373)
        //     at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:95)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:344)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:206)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:93)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:868)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:761)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:638)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:605)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:195)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:162)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:137)
        //     at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71)
        //     at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
        //     at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:333)
        //     at com.strobel.decompiler.DecompilerDriver.decompileJar(DecompilerDriver.java:254)
        //     at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:129)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
    
    @Deprecated
    private static class DoubleOrSchema implements Codec<Object>
    {
        private static final DoubleOrSchema INSTANCE;
        
        @Override
        public Object decode(@Nonnull final BsonValue bsonValue, final ExtraInfo extraInfo) {
            if (bsonValue.isNumber()) {
                return Codec.DOUBLE.decode(bsonValue, extraInfo);
            }
            return Schema.CODEC.decode(bsonValue, extraInfo);
        }
        
        @Override
        public BsonValue encode(final Object o, final ExtraInfo extraInfo) {
            if (o instanceof final Double n) {
                return Codec.DOUBLE.encode(n, extraInfo);
            }
            return Schema.CODEC.encode((Schema)o, extraInfo);
        }
        
        @Nonnull
        @Override
        public Schema toSchema(@Nonnull final SchemaContext context) {
            return Schema.anyOf(new NumberSchema(), Schema.CODEC.toSchema(context));
        }
        
        static {
            INSTANCE = new DoubleOrSchema();
        }
    }
}
