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

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

import org.bson.BsonArray;
import com.hypixel.hytale.codec.schema.SchemaContext;
import org.bson.BsonNull;
import com.hypixel.hytale.codec.ExtraInfo;
import org.bson.BsonValue;
import com.hypixel.hytale.codec.schema.metadata.ui.UIButton;
import com.hypixel.hytale.codec.schema.metadata.ui.UIRebuildCaches;
import com.hypixel.hytale.codec.schema.metadata.ui.UIDisplayMode;
import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorPreview;
import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorFeatures;
import java.util.Objects;
import com.hypixel.hytale.codec.util.Documentation;
import com.hypixel.hytale.codec.schema.metadata.ui.UIEditor;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.lookup.Priority;
import java.util.Arrays;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.bson.BsonDocument;
import java.util.Map;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
import com.hypixel.hytale.codec.lookup.ObjectCodecMapCodec;

public class Schema
{
    public static final ObjectCodecMapCodec<String, Schema> CODEC;
    public static final ArrayCodec<Schema> ARRAY_CODEC;
    public static final BuilderCodec<Schema> BASE_CODEC;
    private String id;
    private String[] types;
    private String title;
    private String description;
    private String markdownDescription;
    private Schema[] anyOf;
    private Schema[] oneOf;
    private Schema[] allOf;
    private Schema not;
    private String[] required;
    private String[] enumDescriptions;
    private String[] markdownEnumDescriptions;
    private Map<String, Schema> definitions;
    private String ref;
    private String data;
    private BsonDocument default_;
    private Schema if_;
    private Schema then;
    private Object else_;
    private HytaleMetadata hytale;
    private InheritSettings hytaleParent;
    private SchemaTypeField hytaleSchemaTypeField;
    private String hytaleAssetRef;
    private String hytaleCustomAssetRef;
    private Boolean doNotSuggest;
    
    public Schema() {
        final String id = Schema.CODEC.getIdFor((Class<?>)this.getClass());
        if (id != null && !id.isBlank()) {
            this.hytale = new HytaleMetadata(id);
        }
    }
    
    public String getId() {
        return this.id;
    }
    
    public void setId(final String id) {
        this.id = id;
    }
    
    public String[] getTypes() {
        return this.types;
    }
    
    public void setTypes(final String[] types) {
        this.types = types;
    }
    
    public String getTitle() {
        return this.title;
    }
    
    public void setTitle(final String title) {
        this.title = title;
    }
    
    public String getDescription() {
        return this.description;
    }
    
    public void setDescription(final String description) {
        this.description = description;
    }
    
    public String getMarkdownDescription() {
        return this.markdownDescription;
    }
    
    public void setMarkdownDescription(final String markdownDescription) {
        this.markdownDescription = markdownDescription;
    }
    
    public String[] getEnumDescriptions() {
        return this.enumDescriptions;
    }
    
    public void setEnumDescriptions(final String[] enumDescriptions) {
        this.enumDescriptions = enumDescriptions;
    }
    
    public String[] getMarkdownEnumDescriptions() {
        return this.markdownEnumDescriptions;
    }
    
    public void setMarkdownEnumDescriptions(final String[] markdownEnumDescriptions) {
        this.markdownEnumDescriptions = markdownEnumDescriptions;
    }
    
    public Schema[] getAnyOf() {
        return this.anyOf;
    }
    
    public void setAnyOf(final Schema... anyOf) {
        this.anyOf = anyOf;
    }
    
    public Schema[] getOneOf() {
        return this.oneOf;
    }
    
    public void setOneOf(final Schema... oneOf) {
        this.oneOf = oneOf;
    }
    
    public Schema[] getAllOf() {
        return this.allOf;
    }
    
    public void setAllOf(final Schema... allOf) {
        this.allOf = allOf;
    }
    
    public String[] getRequired() {
        return this.required;
    }
    
    public void setRequired(final String... required) {
        this.required = required;
    }
    
    public BsonDocument getDefaultRaw() {
        return this.default_;
    }
    
    public void setDefaultRaw(final BsonDocument default_) {
        this.default_ = default_;
    }
    
    public Map<String, Schema> getDefinitions() {
        return this.definitions;
    }
    
    public void setDefinitions(final Map<String, Schema> definitions) {
        this.definitions = definitions;
    }
    
    public String getRef() {
        return this.ref;
    }
    
    public void setRef(final String ref) {
        this.ref = ref;
    }
    
    public String getData() {
        return this.data;
    }
    
    public void setData(final String data) {
        this.data = data;
    }
    
    public Schema getIf() {
        return this.if_;
    }
    
    public void setIf(final Schema if_) {
        this.if_ = if_;
    }
    
    public Schema getThen() {
        return this.then;
    }
    
    public void setThen(final Schema then) {
        this.then = then;
    }
    
    public Schema getElse() {
        return (Schema)this.else_;
    }
    
    public void setElse(final Schema else_) {
        this.else_ = else_;
    }
    
    public void setElse(final boolean else_) {
        this.else_ = else_;
    }
    
    public Boolean isDoNotSuggest() {
        return this.doNotSuggest;
    }
    
    public void setDoNotSuggest(final boolean doNotSuggest) {
        this.doNotSuggest = doNotSuggest;
    }
    
    @Nullable
    public HytaleMetadata getHytale() {
        return this.getHytale(true);
    }
    
    @Nullable
    public HytaleMetadata getHytale(final boolean createInstance) {
        if (createInstance && this.hytale == null) {
            this.hytale = new HytaleMetadata();
            this.hytale.type = Schema.CODEC.getIdFor((Class<?>)this.getClass());
        }
        return this.hytale;
    }
    
    public String getHytaleAssetRef() {
        return this.hytaleAssetRef;
    }
    
    public void setHytaleAssetRef(final String hytaleAssetRef) {
        this.hytaleAssetRef = hytaleAssetRef;
    }
    
    public InheritSettings getHytaleParent() {
        return this.hytaleParent;
    }
    
    public void setHytaleParent(final InheritSettings hytaleParent) {
        this.hytaleParent = hytaleParent;
    }
    
    public SchemaTypeField getHytaleSchemaTypeField() {
        return this.hytaleSchemaTypeField;
    }
    
    public void setHytaleSchemaTypeField(final SchemaTypeField hytaleSchemaTypeField) {
        this.hytaleSchemaTypeField = hytaleSchemaTypeField;
    }
    
    public String getHytaleCustomAssetRef() {
        return this.hytaleCustomAssetRef;
    }
    
    public void setHytaleCustomAssetRef(final String hytaleCustomAssetRef) {
        this.hytaleCustomAssetRef = hytaleCustomAssetRef;
    }
    
    @Nonnull
    public static Schema ref(final String file) {
        final Schema s = new Schema();
        s.setRef(file);
        return s;
    }
    
    @Nonnull
    public static Schema data(final String file) {
        final Schema s = new Schema();
        s.setData(file);
        return s;
    }
    
    @Nonnull
    public static Schema anyOf(final Schema... anyOf) {
        final Schema s = new Schema();
        s.anyOf = anyOf;
        return s;
    }
    
    @Nonnull
    public static Schema not(final Schema not) {
        final Schema s = new Schema();
        s.not = not;
        return s;
    }
    
    @Override
    public boolean equals(@Nullable final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }
        final Schema schema = (Schema)o;
        Label_0062: {
            if (this.id != null) {
                if (this.id.equals(schema.id)) {
                    break Label_0062;
                }
            }
            else if (schema.id == null) {
                break Label_0062;
            }
            return false;
        }
        if (!Arrays.equals(this.types, schema.types)) {
            return false;
        }
        Label_0111: {
            if (this.title != null) {
                if (this.title.equals(schema.title)) {
                    break Label_0111;
                }
            }
            else if (schema.title == null) {
                break Label_0111;
            }
            return false;
        }
        Label_0144: {
            if (this.description != null) {
                if (this.description.equals(schema.description)) {
                    break Label_0144;
                }
            }
            else if (schema.description == null) {
                break Label_0144;
            }
            return false;
        }
        Label_0177: {
            if (this.markdownDescription != null) {
                if (this.markdownDescription.equals(schema.markdownDescription)) {
                    break Label_0177;
                }
            }
            else if (schema.markdownDescription == null) {
                break Label_0177;
            }
            return false;
        }
        if (!Arrays.equals(this.anyOf, schema.anyOf)) {
            return false;
        }
        if (!Arrays.equals(this.oneOf, schema.oneOf)) {
            return false;
        }
        if (!Arrays.equals(this.allOf, schema.allOf)) {
            return false;
        }
        Label_0258: {
            if (this.not != null) {
                if (this.not.equals(schema.not)) {
                    break Label_0258;
                }
            }
            else if (schema.not == null) {
                break Label_0258;
            }
            return false;
        }
        if (!Arrays.equals(this.required, schema.required)) {
            return false;
        }
        if (!Arrays.equals(this.enumDescriptions, schema.enumDescriptions)) {
            return false;
        }
        if (!Arrays.equals(this.markdownEnumDescriptions, schema.markdownEnumDescriptions)) {
            return false;
        }
        Label_0341: {
            if (this.definitions != null) {
                if (this.definitions.equals(schema.definitions)) {
                    break Label_0341;
                }
            }
            else if (schema.definitions == null) {
                break Label_0341;
            }
            return false;
        }
        Label_0374: {
            if (this.ref != null) {
                if (this.ref.equals(schema.ref)) {
                    break Label_0374;
                }
            }
            else if (schema.ref == null) {
                break Label_0374;
            }
            return false;
        }
        Label_0407: {
            if (this.data != null) {
                if (this.data.equals(schema.data)) {
                    break Label_0407;
                }
            }
            else if (schema.data == null) {
                break Label_0407;
            }
            return false;
        }
        Label_0440: {
            if (this.default_ != null) {
                if (this.default_.equals(schema.default_)) {
                    break Label_0440;
                }
            }
            else if (schema.default_ == null) {
                break Label_0440;
            }
            return false;
        }
        Label_0473: {
            if (this.hytale != null) {
                if (this.hytale.equals(schema.hytale)) {
                    break Label_0473;
                }
            }
            else if (schema.hytale == null) {
                break Label_0473;
            }
            return false;
        }
        Label_0506: {
            if (this.hytaleParent != null) {
                if (this.hytaleParent.equals(schema.hytaleParent)) {
                    break Label_0506;
                }
            }
            else if (schema.hytaleParent == null) {
                break Label_0506;
            }
            return false;
        }
        Label_0539: {
            if (this.hytaleSchemaTypeField != null) {
                if (this.hytaleSchemaTypeField.equals(schema.hytaleSchemaTypeField)) {
                    break Label_0539;
                }
            }
            else if (schema.hytaleSchemaTypeField == null) {
                break Label_0539;
            }
            return false;
        }
        if (this.hytaleAssetRef != null) {
            if (this.hytaleAssetRef.equals(schema.hytaleAssetRef)) {
                return (this.hytaleCustomAssetRef != null) ? this.hytaleCustomAssetRef.equals(schema.hytaleCustomAssetRef) : (schema.hytaleCustomAssetRef == null);
            }
        }
        else if (schema.hytaleAssetRef == null) {
            return (this.hytaleCustomAssetRef != null) ? this.hytaleCustomAssetRef.equals(schema.hytaleCustomAssetRef) : (schema.hytaleCustomAssetRef == null);
        }
        return false;
    }
    
    @Override
    public int hashCode() {
        int result = (this.id != null) ? this.id.hashCode() : 0;
        result = 31 * result + Arrays.hashCode(this.types);
        result = 31 * result + ((this.title != null) ? this.title.hashCode() : 0);
        result = 31 * result + ((this.description != null) ? this.description.hashCode() : 0);
        result = 31 * result + ((this.markdownDescription != null) ? this.markdownDescription.hashCode() : 0);
        result = 31 * result + Arrays.hashCode(this.anyOf);
        result = 31 * result + Arrays.hashCode(this.oneOf);
        result = 31 * result + Arrays.hashCode(this.allOf);
        result = 31 * result + ((this.not != null) ? this.not.hashCode() : 0);
        result = 31 * result + Arrays.hashCode(this.required);
        result = 31 * result + Arrays.hashCode(this.enumDescriptions);
        result = 31 * result + Arrays.hashCode(this.markdownEnumDescriptions);
        result = 31 * result + ((this.definitions != null) ? this.definitions.hashCode() : 0);
        result = 31 * result + ((this.ref != null) ? this.ref.hashCode() : 0);
        result = 31 * result + ((this.data != null) ? this.data.hashCode() : 0);
        result = 31 * result + ((this.default_ != null) ? this.default_.hashCode() : 0);
        result = 31 * result + ((this.hytale != null) ? this.hytale.hashCode() : 0);
        result = 31 * result + ((this.hytaleParent != null) ? this.hytaleParent.hashCode() : 0);
        result = 31 * result + ((this.hytaleSchemaTypeField != null) ? this.hytaleSchemaTypeField.hashCode() : 0);
        result = 31 * result + ((this.hytaleAssetRef != null) ? this.hytaleAssetRef.hashCode() : 0);
        result = 31 * result + ((this.hytaleCustomAssetRef != null) ? this.hytaleCustomAssetRef.hashCode() : 0);
        return result;
    }
    
    public static void init() {
        Schema.CODEC.register(Priority.DEFAULT, "", Schema.class, Schema.BASE_CODEC);
        Schema.CODEC.register("null", NullSchema.class, NullSchema.CODEC);
        Schema.CODEC.register("string", StringSchema.class, StringSchema.CODEC);
        Schema.CODEC.register("number", NumberSchema.class, NumberSchema.CODEC);
        Schema.CODEC.register("integer", IntegerSchema.class, IntegerSchema.CODEC);
        Schema.CODEC.register("array", ArraySchema.class, ArraySchema.CODEC);
        Schema.CODEC.register("boolean", BooleanSchema.class, BooleanSchema.CODEC);
        Schema.CODEC.register("object", ObjectSchema.class, ObjectSchema.CODEC);
        UIEditor.init();
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     3: dup            
        //     4: ldc             "type"
        //     6: new             Lcom/hypixel/hytale/codec/schema/config/Schema$StringOrBlank;
        //     9: dup            
        //    10: invokespecial   com/hypixel/hytale/codec/schema/config/Schema$StringOrBlank.<init>:()V
        //    13: iconst_1       
        //    14: iconst_0       
        //    15: invokespecial   com/hypixel/hytale/codec/lookup/ObjectCodecMapCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //    18: putstatic       com/hypixel/hytale/codec/schema/config/Schema.CODEC:Lcom/hypixel/hytale/codec/lookup/ObjectCodecMapCodec;
        //    21: new             Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //    24: dup            
        //    25: getstatic       com/hypixel/hytale/codec/schema/config/Schema.CODEC:Lcom/hypixel/hytale/codec/lookup/ObjectCodecMapCodec;
        //    28: invokedynamic   BootstrapMethod #0, apply:()Ljava/util/function/IntFunction;
        //    33: invokespecial   com/hypixel/hytale/codec/codecs/array/ArrayCodec.<init>:(Lcom/hypixel/hytale/codec/Codec;Ljava/util/function/IntFunction;)V
        //    36: putstatic       com/hypixel/hytale/codec/schema/config/Schema.ARRAY_CODEC:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //    39: ldc             Lcom/hypixel/hytale/codec/schema/config/Schema;.class
        //    41: invokedynamic   BootstrapMethod #1, get:()Ljava/util/function/Supplier;
        //    46: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    49: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    52: dup            
        //    53: ldc_w           "$id"
        //    56: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //    59: iconst_0       
        //    60: iconst_1       
        //    61: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //    64: invokedynamic   BootstrapMethod #2, accept:()Ljava/util/function/BiConsumer;
        //    69: invokedynamic   BootstrapMethod #3, apply:()Ljava/util/function/Function;
        //    74: 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;
        //    77: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    80: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    83: dup            
        //    84: ldc             "type"
        //    86: new             Lcom/hypixel/hytale/codec/schema/config/Schema$ArrayOrNull;
        //    89: dup            
        //    90: invokespecial   com/hypixel/hytale/codec/schema/config/Schema$ArrayOrNull.<init>:()V
        //    93: iconst_0       
        //    94: iconst_1       
        //    95: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //    98: invokedynamic   BootstrapMethod #4, accept:()Ljava/util/function/BiConsumer;
        //   103: invokedynamic   BootstrapMethod #5, apply:()Ljava/util/function/Function;
        //   108: 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;
        //   111: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   114: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   117: dup            
        //   118: ldc_w           "title"
        //   121: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   124: iconst_0       
        //   125: iconst_1       
        //   126: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   129: invokedynamic   BootstrapMethod #6, accept:()Ljava/util/function/BiConsumer;
        //   134: invokedynamic   BootstrapMethod #7, apply:()Ljava/util/function/Function;
        //   139: 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;
        //   142: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   145: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   148: dup            
        //   149: ldc_w           "description"
        //   152: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   155: iconst_0       
        //   156: iconst_1       
        //   157: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   160: invokedynamic   BootstrapMethod #8, accept:()Ljava/util/function/BiConsumer;
        //   165: invokedynamic   BootstrapMethod #9, apply:()Ljava/util/function/Function;
        //   170: 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;
        //   173: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   176: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   179: dup            
        //   180: ldc_w           "markdownDescription"
        //   183: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   186: iconst_0       
        //   187: iconst_1       
        //   188: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   191: invokedynamic   BootstrapMethod #10, accept:()Ljava/util/function/BiConsumer;
        //   196: invokedynamic   BootstrapMethod #11, apply:()Ljava/util/function/Function;
        //   201: 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;
        //   204: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   207: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   210: dup            
        //   211: ldc_w           "enumDescriptions"
        //   214: getstatic       com/hypixel/hytale/codec/Codec.STRING_ARRAY:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //   217: iconst_0       
        //   218: iconst_1       
        //   219: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   222: invokedynamic   BootstrapMethod #12, accept:()Ljava/util/function/BiConsumer;
        //   227: invokedynamic   BootstrapMethod #13, apply:()Ljava/util/function/Function;
        //   232: 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;
        //   235: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   238: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   241: dup            
        //   242: ldc_w           "markdownEnumDescriptions"
        //   245: getstatic       com/hypixel/hytale/codec/Codec.STRING_ARRAY:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //   248: iconst_0       
        //   249: iconst_1       
        //   250: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   253: invokedynamic   BootstrapMethod #14, accept:()Ljava/util/function/BiConsumer;
        //   258: invokedynamic   BootstrapMethod #15, apply:()Ljava/util/function/Function;
        //   263: 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;
        //   266: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   269: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   272: dup            
        //   273: ldc_w           "anyOf"
        //   276: getstatic       com/hypixel/hytale/codec/schema/config/Schema.ARRAY_CODEC:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //   279: iconst_0       
        //   280: iconst_1       
        //   281: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   284: invokedynamic   BootstrapMethod #16, accept:()Ljava/util/function/BiConsumer;
        //   289: invokedynamic   BootstrapMethod #17, apply:()Ljava/util/function/Function;
        //   294: 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;
        //   297: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   300: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   303: dup            
        //   304: ldc_w           "oneOf"
        //   307: getstatic       com/hypixel/hytale/codec/schema/config/Schema.ARRAY_CODEC:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //   310: iconst_0       
        //   311: iconst_1       
        //   312: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   315: invokedynamic   BootstrapMethod #18, accept:()Ljava/util/function/BiConsumer;
        //   320: invokedynamic   BootstrapMethod #19, apply:()Ljava/util/function/Function;
        //   325: 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;
        //   328: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   331: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   334: dup            
        //   335: ldc_w           "allOf"
        //   338: getstatic       com/hypixel/hytale/codec/schema/config/Schema.ARRAY_CODEC:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //   341: iconst_0       
        //   342: iconst_1       
        //   343: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   346: invokedynamic   BootstrapMethod #20, accept:()Ljava/util/function/BiConsumer;
        //   351: invokedynamic   BootstrapMethod #21, apply:()Ljava/util/function/Function;
        //   356: 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;
        //   359: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   362: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   365: dup            
        //   366: ldc_w           "not"
        //   369: getstatic       com/hypixel/hytale/codec/schema/config/Schema.CODEC:Lcom/hypixel/hytale/codec/lookup/ObjectCodecMapCodec;
        //   372: iconst_0       
        //   373: iconst_1       
        //   374: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   377: invokedynamic   BootstrapMethod #22, accept:()Ljava/util/function/BiConsumer;
        //   382: invokedynamic   BootstrapMethod #23, apply:()Ljava/util/function/Function;
        //   387: 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;
        //   390: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   393: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   396: dup            
        //   397: ldc_w           "if"
        //   400: getstatic       com/hypixel/hytale/codec/schema/config/Schema.CODEC:Lcom/hypixel/hytale/codec/lookup/ObjectCodecMapCodec;
        //   403: iconst_0       
        //   404: iconst_1       
        //   405: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   408: invokedynamic   BootstrapMethod #24, accept:()Ljava/util/function/BiConsumer;
        //   413: invokedynamic   BootstrapMethod #25, apply:()Ljava/util/function/Function;
        //   418: 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;
        //   421: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   424: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   427: dup            
        //   428: ldc_w           "then"
        //   431: getstatic       com/hypixel/hytale/codec/schema/config/Schema.CODEC:Lcom/hypixel/hytale/codec/lookup/ObjectCodecMapCodec;
        //   434: iconst_0       
        //   435: iconst_1       
        //   436: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   439: invokedynamic   BootstrapMethod #26, accept:()Ljava/util/function/BiConsumer;
        //   444: invokedynamic   BootstrapMethod #27, apply:()Ljava/util/function/Function;
        //   449: 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;
        //   452: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   455: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   458: dup            
        //   459: ldc_w           "else"
        //   462: new             Lcom/hypixel/hytale/codec/schema/config/Schema$BooleanOrSchema;
        //   465: dup            
        //   466: invokespecial   com/hypixel/hytale/codec/schema/config/Schema$BooleanOrSchema.<init>:()V
        //   469: iconst_0       
        //   470: iconst_1       
        //   471: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   474: invokedynamic   BootstrapMethod #28, accept:()Ljava/util/function/BiConsumer;
        //   479: invokedynamic   BootstrapMethod #29, apply:()Ljava/util/function/Function;
        //   484: 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;
        //   487: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   490: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   493: dup            
        //   494: ldc_w           "required"
        //   497: getstatic       com/hypixel/hytale/codec/Codec.STRING_ARRAY:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
        //   500: iconst_0       
        //   501: iconst_1       
        //   502: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   505: invokedynamic   BootstrapMethod #30, accept:()Ljava/util/function/BiConsumer;
        //   510: invokedynamic   BootstrapMethod #31, apply:()Ljava/util/function/Function;
        //   515: 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;
        //   518: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   521: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   524: dup            
        //   525: ldc_w           "default"
        //   528: getstatic       com/hypixel/hytale/codec/Codec.BSON_DOCUMENT:Lcom/hypixel/hytale/codec/codecs/BsonDocumentCodec;
        //   531: iconst_0       
        //   532: iconst_1       
        //   533: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   536: invokedynamic   BootstrapMethod #32, accept:()Ljava/util/function/BiConsumer;
        //   541: invokedynamic   BootstrapMethod #33, apply:()Ljava/util/function/Function;
        //   546: 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;
        //   549: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   552: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   555: dup            
        //   556: ldc_w           "definitions"
        //   559: new             Lcom/hypixel/hytale/codec/codecs/map/MapCodec;
        //   562: dup            
        //   563: getstatic       com/hypixel/hytale/codec/schema/config/Schema.CODEC:Lcom/hypixel/hytale/codec/lookup/ObjectCodecMapCodec;
        //   566: invokedynamic   BootstrapMethod #34, get:()Ljava/util/function/Supplier;
        //   571: invokespecial   com/hypixel/hytale/codec/codecs/map/MapCodec.<init>:(Lcom/hypixel/hytale/codec/Codec;Ljava/util/function/Supplier;)V
        //   574: iconst_0       
        //   575: iconst_1       
        //   576: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   579: invokedynamic   BootstrapMethod #35, accept:()Ljava/util/function/BiConsumer;
        //   584: invokedynamic   BootstrapMethod #36, apply:()Ljava/util/function/Function;
        //   589: 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;
        //   592: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   595: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   598: dup            
        //   599: ldc_w           "$ref"
        //   602: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   605: iconst_0       
        //   606: iconst_1       
        //   607: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   610: invokedynamic   BootstrapMethod #37, accept:()Ljava/util/function/BiConsumer;
        //   615: invokedynamic   BootstrapMethod #38, apply:()Ljava/util/function/Function;
        //   620: 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;
        //   623: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   626: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   629: dup            
        //   630: ldc_w           "$data"
        //   633: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   636: iconst_0       
        //   637: iconst_1       
        //   638: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   641: invokedynamic   BootstrapMethod #39, accept:()Ljava/util/function/BiConsumer;
        //   646: invokedynamic   BootstrapMethod #40, apply:()Ljava/util/function/Function;
        //   651: 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;
        //   654: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   657: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   660: dup            
        //   661: ldc_w           "doNotSuggest"
        //   664: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
        //   667: iconst_0       
        //   668: iconst_1       
        //   669: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   672: invokedynamic   BootstrapMethod #41, accept:()Ljava/util/function/BiConsumer;
        //   677: invokedynamic   BootstrapMethod #42, apply:()Ljava/util/function/Function;
        //   682: 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;
        //   685: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   688: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   691: dup            
        //   692: ldc_w           "hytaleAssetRef"
        //   695: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   698: iconst_0       
        //   699: iconst_1       
        //   700: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   703: invokedynamic   BootstrapMethod #43, accept:()Ljava/util/function/BiConsumer;
        //   708: invokedynamic   BootstrapMethod #44, apply:()Ljava/util/function/Function;
        //   713: 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;
        //   716: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   719: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   722: dup            
        //   723: ldc_w           "hytaleCustomAssetRef"
        //   726: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
        //   729: iconst_0       
        //   730: iconst_1       
        //   731: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   734: invokedynamic   BootstrapMethod #45, accept:()Ljava/util/function/BiConsumer;
        //   739: invokedynamic   BootstrapMethod #46, apply:()Ljava/util/function/Function;
        //   744: 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;
        //   747: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   750: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   753: dup            
        //   754: ldc_w           "hytaleParent"
        //   757: getstatic       com/hypixel/hytale/codec/schema/config/Schema$InheritSettings.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   760: iconst_0       
        //   761: iconst_1       
        //   762: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   765: invokedynamic   BootstrapMethod #47, accept:()Ljava/util/function/BiConsumer;
        //   770: invokedynamic   BootstrapMethod #48, apply:()Ljava/util/function/Function;
        //   775: 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;
        //   778: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   781: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   784: dup            
        //   785: ldc_w           "hytaleSchemaTypeField"
        //   788: getstatic       com/hypixel/hytale/codec/schema/config/Schema$SchemaTypeField.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   791: iconst_0       
        //   792: iconst_1       
        //   793: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   796: invokedynamic   BootstrapMethod #49, accept:()Ljava/util/function/BiConsumer;
        //   801: invokedynamic   BootstrapMethod #50, apply:()Ljava/util/function/Function;
        //   806: 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;
        //   809: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   812: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   815: dup            
        //   816: ldc_w           "hytale"
        //   819: getstatic       com/hypixel/hytale/codec/schema/config/Schema$HytaleMetadata.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   822: iconst_0       
        //   823: iconst_1       
        //   824: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
        //   827: invokedynamic   BootstrapMethod #51, accept:()Ljava/util/function/BiConsumer;
        //   832: invokedynamic   BootstrapMethod #52, apply:()Ljava/util/function/Function;
        //   837: 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;
        //   840: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   843: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   846: putstatic       com/hypixel/hytale/codec/schema/config/Schema.BASE_CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   849: 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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.");
    }
    
    public static class SchemaTypeField
    {
        public static final BuilderCodec<SchemaTypeField> CODEC;
        private String property;
        private String defaultValue;
        private String[] values;
        private String parentPropertyKey;
        
        public SchemaTypeField(final String property, final String defaultValue, final String... values) {
            this.property = property;
            this.defaultValue = defaultValue;
            this.values = values;
        }
        
        protected SchemaTypeField() {
        }
        
        public String getProperty() {
            return this.property;
        }
        
        public String getDefaultValue() {
            return this.defaultValue;
        }
        
        public String[] getValues() {
            return this.values;
        }
        
        public String getParentPropertyKey() {
            return this.parentPropertyKey;
        }
        
        public void setParentPropertyKey(final String parentPropertyKey) {
            this.parentPropertyKey = parentPropertyKey;
        }
        
        @Override
        public boolean equals(final Object o) {
            if (o == null || this.getClass() != o.getClass()) {
                return false;
            }
            final SchemaTypeField that = (SchemaTypeField)o;
            return Objects.equals(this.property, that.property) && Objects.equals(this.defaultValue, that.defaultValue) && Arrays.deepEquals(this.values, that.values) && Objects.equals(this.parentPropertyKey, that.parentPropertyKey);
        }
        
        @Override
        public int hashCode() {
            int result = Objects.hashCode(this.property);
            result = 31 * result + Objects.hashCode(this.defaultValue);
            result = 31 * result + Arrays.hashCode(this.values);
            result = 31 * result + Objects.hashCode(this.parentPropertyKey);
            return result;
        }
        
        static {
            // 
            // This method could not be decompiled.
            // 
            // Original Bytecode:
            // 
            //     2: invokedynamic   BootstrapMethod #0, get:()Ljava/util/function/Supplier;
            //     7: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    10: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    13: dup            
            //    14: ldc             "property"
            //    16: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    19: iconst_0       
            //    20: iconst_1       
            //    21: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    24: invokedynamic   BootstrapMethod #1, accept:()Ljava/util/function/BiConsumer;
            //    29: invokedynamic   BootstrapMethod #2, apply:()Ljava/util/function/Function;
            //    34: 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;
            //    37: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    40: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    43: dup            
            //    44: ldc             "defaultValue"
            //    46: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    49: iconst_0       
            //    50: iconst_1       
            //    51: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    54: invokedynamic   BootstrapMethod #3, accept:()Ljava/util/function/BiConsumer;
            //    59: invokedynamic   BootstrapMethod #4, apply:()Ljava/util/function/Function;
            //    64: 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;
            //    67: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    70: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    73: dup            
            //    74: ldc             "values"
            //    76: getstatic       com/hypixel/hytale/codec/Codec.STRING_ARRAY:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
            //    79: iconst_0       
            //    80: iconst_1       
            //    81: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    84: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
            //    89: invokedynamic   BootstrapMethod #6, apply:()Ljava/util/function/Function;
            //    94: 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;
            //    97: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   100: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   103: dup            
            //   104: ldc             "parentPropertyKey"
            //   106: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   109: iconst_0       
            //   110: iconst_1       
            //   111: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   114: invokedynamic   BootstrapMethod #7, accept:()Ljava/util/function/BiConsumer;
            //   119: invokedynamic   BootstrapMethod #8, apply:()Ljava/util/function/Function;
            //   124: 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;
            //   127: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   130: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   133: putstatic       com/hypixel/hytale/codec/schema/config/Schema$SchemaTypeField.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   136: 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.visitParameterizedType(TypeSubstitutionVisitor.java:225)
            //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:25)
            //     at com.strobel.assembler.metadata.ParameterizedType.accept(ParameterizedType.java:103)
            //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
            //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitMethod(TypeSubstitutionVisitor.java:314)
            //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2611)
            //     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: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.addTypeMembers(AstBuilder.java:662)
            //     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.");
        }
    }
    
    public static class HytaleMetadata
    {
        public static final BuilderCodec<HytaleMetadata> CODEC;
        private String type;
        private String path;
        private String virtualPath;
        private String extension;
        private String idProvider;
        private String[] internalKeys;
        private Boolean inheritsProperty;
        private Boolean mergesProperties;
        private UIEditorFeatures.EditorFeature[] uiEditorFeatures;
        private UIEditorPreview.PreviewType uiEditorPreview;
        private String uiTypeIcon;
        private Boolean uiEditorIgnore;
        private Boolean allowEmptyObject;
        private UIDisplayMode.DisplayMode uiDisplayMode;
        private UIEditor.EditorComponent uiEditorComponent;
        private String uiPropertyTitle;
        private String uiSectionStart;
        private UIRebuildCaches.ClientCache[] uiRebuildCaches;
        private Boolean uiRebuildCachesForChildProperties;
        private UIButton[] uiSidebarButtons;
        private Boolean uiCollapsedByDefault;
        private UIButton[] uiCreateButtons;
        
        public HytaleMetadata(final String type) {
            this.type = type;
        }
        
        public HytaleMetadata() {
        }
        
        public String getType() {
            return this.type;
        }
        
        public void setType(final String type) {
            this.type = type;
        }
        
        public String getPath() {
            return this.path;
        }
        
        public void setPath(final String path) {
            this.path = path;
        }
        
        public String getVirtualPath() {
            return this.virtualPath;
        }
        
        public void setVirtualPath(final String virtualPath) {
            this.virtualPath = virtualPath;
        }
        
        public String getExtension() {
            return this.extension;
        }
        
        public void setExtension(final String extension) {
            this.extension = extension;
        }
        
        public String getIdProvider() {
            return this.idProvider;
        }
        
        public void setIdProvider(final String idProvider) {
            this.idProvider = idProvider;
        }
        
        public String[] getInternalKeys() {
            return this.internalKeys;
        }
        
        public void setInternalKeys(final String[] internalKeys) {
            this.internalKeys = internalKeys;
        }
        
        public UIDisplayMode.DisplayMode getUiDisplayMode() {
            return this.uiDisplayMode;
        }
        
        public void setUiDisplayMode(final UIDisplayMode.DisplayMode uiDisplayMode) {
            this.uiDisplayMode = uiDisplayMode;
        }
        
        public UIEditor.EditorComponent getUiEditorComponent() {
            return this.uiEditorComponent;
        }
        
        public void setUiEditorComponent(final UIEditor.EditorComponent uiEditorComponent) {
            this.uiEditorComponent = uiEditorComponent;
        }
        
        public UIEditorFeatures.EditorFeature[] getUiEditorFeatures() {
            return this.uiEditorFeatures;
        }
        
        public void setUiEditorFeatures(final UIEditorFeatures.EditorFeature[] uiEditorFeatures) {
            this.uiEditorFeatures = uiEditorFeatures;
        }
        
        public UIEditorPreview.PreviewType getUiEditorPreview() {
            return this.uiEditorPreview;
        }
        
        public void setUiEditorPreview(final UIEditorPreview.PreviewType uiEditorPreview) {
            this.uiEditorPreview = uiEditorPreview;
        }
        
        public String getUiTypeIcon() {
            return this.uiTypeIcon;
        }
        
        public void setUiTypeIcon(final String uiTypeIcon) {
            this.uiTypeIcon = uiTypeIcon;
        }
        
        public Boolean getUiEditorIgnore() {
            return this.uiEditorIgnore;
        }
        
        public void setUiEditorIgnore(final Boolean uiEditorIgnore) {
            this.uiEditorIgnore = uiEditorIgnore;
        }
        
        public Boolean getAllowEmptyObject() {
            return this.allowEmptyObject;
        }
        
        public void setAllowEmptyObject(final Boolean allowEmptyObject) {
            this.allowEmptyObject = allowEmptyObject;
        }
        
        public String getUiPropertyTitle() {
            return this.uiPropertyTitle;
        }
        
        public void setUiPropertyTitle(final String uiPropertyTitle) {
            this.uiPropertyTitle = uiPropertyTitle;
        }
        
        public String getUiSectionStart() {
            return this.uiSectionStart;
        }
        
        public void setUiSectionStart(final String uiSectionStart) {
            this.uiSectionStart = uiSectionStart;
        }
        
        public boolean isInheritsProperty() {
            return this.inheritsProperty;
        }
        
        public void setInheritsProperty(final boolean inheritsProperty) {
            this.inheritsProperty = inheritsProperty;
        }
        
        public boolean getMergesProperties() {
            return this.mergesProperties;
        }
        
        public void setMergesProperties(final boolean mergesProperties) {
            this.mergesProperties = mergesProperties;
        }
        
        public UIRebuildCaches.ClientCache[] getUiRebuildCaches() {
            return this.uiRebuildCaches;
        }
        
        public void setUiRebuildCaches(final UIRebuildCaches.ClientCache[] uiRebuildCaches) {
            this.uiRebuildCaches = uiRebuildCaches;
        }
        
        public Boolean getUiRebuildCachesForChildProperties() {
            return this.uiRebuildCachesForChildProperties;
        }
        
        public void setUiRebuildCachesForChildProperties(final Boolean uiRebuildCachesForChildProperties) {
            this.uiRebuildCachesForChildProperties = uiRebuildCachesForChildProperties;
        }
        
        public UIButton[] getUiSidebarButtons() {
            return this.uiSidebarButtons;
        }
        
        public void setUiSidebarButtons(final UIButton[] uiSidebarButtons) {
            this.uiSidebarButtons = uiSidebarButtons;
        }
        
        public Boolean getUiCollapsedByDefault() {
            return this.uiCollapsedByDefault;
        }
        
        public void setUiCollapsedByDefault(final Boolean uiCollapsedByDefault) {
            this.uiCollapsedByDefault = uiCollapsedByDefault;
        }
        
        public UIButton[] getUiCreateButtons() {
            return this.uiCreateButtons;
        }
        
        public void setUiCreateButtons(final UIButton[] uiCreateButtons) {
            this.uiCreateButtons = uiCreateButtons;
        }
        
        @Override
        public boolean equals(@Nullable final Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || this.getClass() != o.getClass()) {
                return false;
            }
            final HytaleMetadata that = (HytaleMetadata)o;
            Label_0062: {
                if (this.type != null) {
                    if (this.type.equals(that.type)) {
                        break Label_0062;
                    }
                }
                else if (that.type == null) {
                    break Label_0062;
                }
                return false;
            }
            Label_0095: {
                if (this.path != null) {
                    if (this.path.equals(that.path)) {
                        break Label_0095;
                    }
                }
                else if (that.path == null) {
                    break Label_0095;
                }
                return false;
            }
            Label_0128: {
                if (this.virtualPath != null) {
                    if (this.virtualPath.equals(that.virtualPath)) {
                        break Label_0128;
                    }
                }
                else if (that.virtualPath == null) {
                    break Label_0128;
                }
                return false;
            }
            Label_0161: {
                if (this.extension != null) {
                    if (this.extension.equals(that.extension)) {
                        break Label_0161;
                    }
                }
                else if (that.extension == null) {
                    break Label_0161;
                }
                return false;
            }
            Label_0194: {
                if (this.idProvider != null) {
                    if (this.idProvider.equals(that.idProvider)) {
                        break Label_0194;
                    }
                }
                else if (that.idProvider == null) {
                    break Label_0194;
                }
                return false;
            }
            if (!Arrays.equals(this.internalKeys, that.internalKeys)) {
                return false;
            }
            Label_0243: {
                if (this.inheritsProperty != null) {
                    if (this.inheritsProperty.equals(that.inheritsProperty)) {
                        break Label_0243;
                    }
                }
                else if (that.inheritsProperty == null) {
                    break Label_0243;
                }
                return false;
            }
            Label_0276: {
                if (this.mergesProperties != null) {
                    if (this.mergesProperties.equals(that.mergesProperties)) {
                        break Label_0276;
                    }
                }
                else if (that.mergesProperties == null) {
                    break Label_0276;
                }
                return false;
            }
            if (!Arrays.equals(this.uiEditorFeatures, that.uiEditorFeatures)) {
                return false;
            }
            if (this.uiEditorPreview != that.uiEditorPreview) {
                return false;
            }
            Label_0338: {
                if (this.uiTypeIcon != null) {
                    if (this.uiTypeIcon.equals(that.uiTypeIcon)) {
                        break Label_0338;
                    }
                }
                else if (that.uiTypeIcon == null) {
                    break Label_0338;
                }
                return false;
            }
            Label_0371: {
                if (this.uiEditorIgnore != null) {
                    if (this.uiEditorIgnore.equals(that.uiEditorIgnore)) {
                        break Label_0371;
                    }
                }
                else if (that.uiEditorIgnore == null) {
                    break Label_0371;
                }
                return false;
            }
            Label_0404: {
                if (this.allowEmptyObject != null) {
                    if (this.allowEmptyObject.equals(that.allowEmptyObject)) {
                        break Label_0404;
                    }
                }
                else if (that.allowEmptyObject == null) {
                    break Label_0404;
                }
                return false;
            }
            if (this.uiDisplayMode != that.uiDisplayMode) {
                return false;
            }
            Label_0452: {
                if (this.uiEditorComponent != null) {
                    if (this.uiEditorComponent.equals(that.uiEditorComponent)) {
                        break Label_0452;
                    }
                }
                else if (that.uiEditorComponent == null) {
                    break Label_0452;
                }
                return false;
            }
            Label_0485: {
                if (this.uiPropertyTitle != null) {
                    if (this.uiPropertyTitle.equals(that.uiPropertyTitle)) {
                        break Label_0485;
                    }
                }
                else if (that.uiPropertyTitle == null) {
                    break Label_0485;
                }
                return false;
            }
            Label_0518: {
                if (this.uiSectionStart != null) {
                    if (this.uiSectionStart.equals(that.uiSectionStart)) {
                        break Label_0518;
                    }
                }
                else if (that.uiSectionStart == null) {
                    break Label_0518;
                }
                return false;
            }
            if (!Arrays.equals(this.uiRebuildCaches, that.uiRebuildCaches)) {
                return false;
            }
            Label_0567: {
                if (this.uiRebuildCachesForChildProperties != null) {
                    if (this.uiRebuildCachesForChildProperties.equals(that.uiRebuildCachesForChildProperties)) {
                        break Label_0567;
                    }
                }
                else if (that.uiRebuildCachesForChildProperties == null) {
                    break Label_0567;
                }
                return false;
            }
            if (!Arrays.equals(this.uiSidebarButtons, that.uiSidebarButtons)) {
                return false;
            }
            if (this.uiCollapsedByDefault != null) {
                if (this.uiCollapsedByDefault.equals(that.uiCollapsedByDefault)) {
                    return Arrays.equals(this.uiCreateButtons, that.uiCreateButtons);
                }
            }
            else if (that.uiCollapsedByDefault == null) {
                return Arrays.equals(this.uiCreateButtons, that.uiCreateButtons);
            }
            return false;
        }
        
        @Override
        public int hashCode() {
            int result = (this.type != null) ? this.type.hashCode() : 0;
            result = 31 * result + ((this.path != null) ? this.path.hashCode() : 0);
            result = 31 * result + ((this.virtualPath != null) ? this.virtualPath.hashCode() : 0);
            result = 31 * result + ((this.extension != null) ? this.extension.hashCode() : 0);
            result = 31 * result + ((this.idProvider != null) ? this.idProvider.hashCode() : 0);
            result = 31 * result + Arrays.hashCode(this.internalKeys);
            result = 31 * result + ((this.inheritsProperty != null) ? this.inheritsProperty.hashCode() : 0);
            result = 31 * result + ((this.mergesProperties != null) ? this.mergesProperties.hashCode() : 0);
            result = 31 * result + Arrays.hashCode(this.uiEditorFeatures);
            result = 31 * result + ((this.uiEditorPreview != null) ? this.uiEditorPreview.hashCode() : 0);
            result = 31 * result + ((this.uiTypeIcon != null) ? this.uiTypeIcon.hashCode() : 0);
            result = 31 * result + ((this.uiEditorIgnore != null) ? this.uiEditorIgnore.hashCode() : 0);
            result = 31 * result + ((this.allowEmptyObject != null) ? this.allowEmptyObject.hashCode() : 0);
            result = 31 * result + ((this.uiDisplayMode != null) ? this.uiDisplayMode.hashCode() : 0);
            result = 31 * result + ((this.uiEditorComponent != null) ? this.uiEditorComponent.hashCode() : 0);
            result = 31 * result + ((this.uiPropertyTitle != null) ? this.uiPropertyTitle.hashCode() : 0);
            result = 31 * result + ((this.uiSectionStart != null) ? this.uiSectionStart.hashCode() : 0);
            result = 31 * result + Arrays.hashCode(this.uiRebuildCaches);
            result = 31 * result + ((this.uiRebuildCachesForChildProperties != null) ? this.uiRebuildCachesForChildProperties.hashCode() : 0);
            result = 31 * result + Arrays.hashCode(this.uiSidebarButtons);
            result = 31 * result + ((this.uiCollapsedByDefault != null) ? this.uiCollapsedByDefault.hashCode() : 0);
            result = 31 * result + Arrays.hashCode(this.uiCreateButtons);
            return result;
        }
        
        static {
            // 
            // This method could not be decompiled.
            // 
            // Original Bytecode:
            // 
            //     2: invokedynamic   BootstrapMethod #0, get:()Ljava/util/function/Supplier;
            //     7: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    10: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    13: dup            
            //    14: ldc             "type"
            //    16: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    19: iconst_0       
            //    20: iconst_1       
            //    21: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    24: invokedynamic   BootstrapMethod #1, accept:()Ljava/util/function/BiConsumer;
            //    29: invokedynamic   BootstrapMethod #2, apply:()Ljava/util/function/Function;
            //    34: 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;
            //    37: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    40: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    43: dup            
            //    44: ldc             "internalKeys"
            //    46: getstatic       com/hypixel/hytale/codec/Codec.STRING_ARRAY:Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
            //    49: iconst_0       
            //    50: iconst_1       
            //    51: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    54: invokedynamic   BootstrapMethod #3, accept:()Ljava/util/function/BiConsumer;
            //    59: invokedynamic   BootstrapMethod #4, apply:()Ljava/util/function/Function;
            //    64: 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;
            //    67: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    70: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    73: dup            
            //    74: ldc             "path"
            //    76: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    79: iconst_0       
            //    80: iconst_1       
            //    81: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    84: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
            //    89: invokedynamic   BootstrapMethod #6, apply:()Ljava/util/function/Function;
            //    94: 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;
            //    97: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   100: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   103: dup            
            //   104: ldc             "virtualPath"
            //   106: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   109: iconst_0       
            //   110: iconst_1       
            //   111: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   114: invokedynamic   BootstrapMethod #7, accept:()Ljava/util/function/BiConsumer;
            //   119: invokedynamic   BootstrapMethod #8, apply:()Ljava/util/function/Function;
            //   124: 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;
            //   127: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   130: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   133: dup            
            //   134: ldc             "extension"
            //   136: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   139: iconst_0       
            //   140: iconst_1       
            //   141: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   144: invokedynamic   BootstrapMethod #9, accept:()Ljava/util/function/BiConsumer;
            //   149: invokedynamic   BootstrapMethod #10, apply:()Ljava/util/function/Function;
            //   154: 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;
            //   157: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   160: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   163: dup            
            //   164: ldc             "idProvider"
            //   166: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   169: iconst_0       
            //   170: iconst_1       
            //   171: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   174: invokedynamic   BootstrapMethod #11, accept:()Ljava/util/function/BiConsumer;
            //   179: invokedynamic   BootstrapMethod #12, apply:()Ljava/util/function/Function;
            //   184: 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;
            //   187: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   190: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   193: dup            
            //   194: ldc             "inheritsProperty"
            //   196: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
            //   199: iconst_0       
            //   200: iconst_1       
            //   201: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   204: invokedynamic   BootstrapMethod #13, accept:()Ljava/util/function/BiConsumer;
            //   209: invokedynamic   BootstrapMethod #14, apply:()Ljava/util/function/Function;
            //   214: 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;
            //   217: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   220: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   223: dup            
            //   224: ldc             "mergesProperties"
            //   226: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
            //   229: iconst_0       
            //   230: iconst_1       
            //   231: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   234: invokedynamic   BootstrapMethod #15, accept:()Ljava/util/function/BiConsumer;
            //   239: invokedynamic   BootstrapMethod #16, apply:()Ljava/util/function/Function;
            //   244: 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;
            //   247: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   250: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   253: dup            
            //   254: ldc             "uiDisplayMode"
            //   256: new             Lcom/hypixel/hytale/codec/codecs/EnumCodec;
            //   259: dup            
            //   260: ldc             Lcom/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode$DisplayMode;.class
            //   262: invokespecial   com/hypixel/hytale/codec/codecs/EnumCodec.<init>:(Ljava/lang/Class;)V
            //   265: iconst_0       
            //   266: iconst_1       
            //   267: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   270: invokedynamic   BootstrapMethod #17, accept:()Ljava/util/function/BiConsumer;
            //   275: invokedynamic   BootstrapMethod #18, apply:()Ljava/util/function/Function;
            //   280: 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;
            //   283: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   286: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   289: dup            
            //   290: ldc             "uiEditorComponent"
            //   292: getstatic       com/hypixel/hytale/codec/schema/metadata/ui/UIEditor.CODEC:Lcom/hypixel/hytale/codec/lookup/CodecMapCodec;
            //   295: iconst_0       
            //   296: iconst_1       
            //   297: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   300: invokedynamic   BootstrapMethod #19, accept:()Ljava/util/function/BiConsumer;
            //   305: invokedynamic   BootstrapMethod #20, apply:()Ljava/util/function/Function;
            //   310: 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;
            //   313: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   316: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   319: dup            
            //   320: ldc             "allowEmptyObject"
            //   322: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
            //   325: iconst_0       
            //   326: iconst_1       
            //   327: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   330: invokedynamic   BootstrapMethod #21, accept:()Ljava/util/function/BiConsumer;
            //   335: invokedynamic   BootstrapMethod #22, apply:()Ljava/util/function/Function;
            //   340: 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;
            //   343: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   346: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   349: dup            
            //   350: ldc             "uiEditorIgnore"
            //   352: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
            //   355: iconst_0       
            //   356: iconst_1       
            //   357: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   360: invokedynamic   BootstrapMethod #23, accept:()Ljava/util/function/BiConsumer;
            //   365: invokedynamic   BootstrapMethod #24, apply:()Ljava/util/function/Function;
            //   370: 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;
            //   373: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   376: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   379: dup            
            //   380: ldc             "uiEditorFeatures"
            //   382: new             Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
            //   385: dup            
            //   386: new             Lcom/hypixel/hytale/codec/codecs/EnumCodec;
            //   389: dup            
            //   390: ldc             Lcom/hypixel/hytale/codec/schema/metadata/ui/UIEditorFeatures$EditorFeature;.class
            //   392: invokespecial   com/hypixel/hytale/codec/codecs/EnumCodec.<init>:(Ljava/lang/Class;)V
            //   395: invokedynamic   BootstrapMethod #25, apply:()Ljava/util/function/IntFunction;
            //   400: invokespecial   com/hypixel/hytale/codec/codecs/array/ArrayCodec.<init>:(Lcom/hypixel/hytale/codec/Codec;Ljava/util/function/IntFunction;)V
            //   403: iconst_0       
            //   404: iconst_1       
            //   405: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   408: invokedynamic   BootstrapMethod #26, accept:()Ljava/util/function/BiConsumer;
            //   413: invokedynamic   BootstrapMethod #27, apply:()Ljava/util/function/Function;
            //   418: 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;
            //   421: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   424: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   427: dup            
            //   428: ldc             "uiEditorPreview"
            //   430: new             Lcom/hypixel/hytale/codec/codecs/EnumCodec;
            //   433: dup            
            //   434: ldc             Lcom/hypixel/hytale/codec/schema/metadata/ui/UIEditorPreview$PreviewType;.class
            //   436: invokespecial   com/hypixel/hytale/codec/codecs/EnumCodec.<init>:(Ljava/lang/Class;)V
            //   439: iconst_0       
            //   440: iconst_1       
            //   441: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   444: invokedynamic   BootstrapMethod #28, accept:()Ljava/util/function/BiConsumer;
            //   449: invokedynamic   BootstrapMethod #29, apply:()Ljava/util/function/Function;
            //   454: 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;
            //   457: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   460: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   463: dup            
            //   464: ldc             "uiTypeIcon"
            //   466: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   469: iconst_0       
            //   470: iconst_1       
            //   471: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   474: invokedynamic   BootstrapMethod #30, accept:()Ljava/util/function/BiConsumer;
            //   479: invokedynamic   BootstrapMethod #31, apply:()Ljava/util/function/Function;
            //   484: 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;
            //   487: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   490: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   493: dup            
            //   494: ldc             "uiPropertyTitle"
            //   496: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   499: iconst_0       
            //   500: iconst_1       
            //   501: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   504: invokedynamic   BootstrapMethod #32, accept:()Ljava/util/function/BiConsumer;
            //   509: invokedynamic   BootstrapMethod #33, apply:()Ljava/util/function/Function;
            //   514: 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;
            //   517: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   520: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   523: dup            
            //   524: ldc             "uiSectionStart"
            //   526: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //   529: iconst_0       
            //   530: iconst_1       
            //   531: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   534: invokedynamic   BootstrapMethod #34, accept:()Ljava/util/function/BiConsumer;
            //   539: invokedynamic   BootstrapMethod #35, apply:()Ljava/util/function/Function;
            //   544: 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;
            //   547: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   550: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   553: dup            
            //   554: ldc             "uiRebuildCaches"
            //   556: new             Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
            //   559: dup            
            //   560: new             Lcom/hypixel/hytale/codec/codecs/EnumCodec;
            //   563: dup            
            //   564: ldc             Lcom/hypixel/hytale/codec/schema/metadata/ui/UIRebuildCaches$ClientCache;.class
            //   566: invokespecial   com/hypixel/hytale/codec/codecs/EnumCodec.<init>:(Ljava/lang/Class;)V
            //   569: invokedynamic   BootstrapMethod #36, apply:()Ljava/util/function/IntFunction;
            //   574: invokespecial   com/hypixel/hytale/codec/codecs/array/ArrayCodec.<init>:(Lcom/hypixel/hytale/codec/Codec;Ljava/util/function/IntFunction;)V
            //   577: iconst_0       
            //   578: iconst_1       
            //   579: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   582: invokedynamic   BootstrapMethod #37, accept:()Ljava/util/function/BiConsumer;
            //   587: invokedynamic   BootstrapMethod #38, apply:()Ljava/util/function/Function;
            //   592: 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;
            //   595: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   598: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   601: dup            
            //   602: ldc             "uiSidebarButtons"
            //   604: new             Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
            //   607: dup            
            //   608: getstatic       com/hypixel/hytale/codec/schema/metadata/ui/UIButton.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   611: invokedynamic   BootstrapMethod #39, apply:()Ljava/util/function/IntFunction;
            //   616: invokespecial   com/hypixel/hytale/codec/codecs/array/ArrayCodec.<init>:(Lcom/hypixel/hytale/codec/Codec;Ljava/util/function/IntFunction;)V
            //   619: iconst_0       
            //   620: iconst_1       
            //   621: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   624: invokedynamic   BootstrapMethod #40, accept:()Ljava/util/function/BiConsumer;
            //   629: invokedynamic   BootstrapMethod #41, apply:()Ljava/util/function/Function;
            //   634: 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;
            //   637: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   640: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   643: dup            
            //   644: ldc_w           "uiRebuildCachesForChildProperties"
            //   647: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
            //   650: iconst_0       
            //   651: iconst_1       
            //   652: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   655: invokedynamic   BootstrapMethod #42, accept:()Ljava/util/function/BiConsumer;
            //   660: invokedynamic   BootstrapMethod #43, apply:()Ljava/util/function/Function;
            //   665: 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;
            //   668: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   671: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   674: dup            
            //   675: ldc_w           "uiCollapsedByDefault"
            //   678: getstatic       com/hypixel/hytale/codec/Codec.BOOLEAN:Lcom/hypixel/hytale/codec/codecs/simple/BooleanCodec;
            //   681: iconst_0       
            //   682: iconst_1       
            //   683: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   686: invokedynamic   BootstrapMethod #44, accept:()Ljava/util/function/BiConsumer;
            //   691: invokedynamic   BootstrapMethod #45, apply:()Ljava/util/function/Function;
            //   696: 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;
            //   699: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   702: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //   705: dup            
            //   706: ldc_w           "uiCreateButtons"
            //   709: new             Lcom/hypixel/hytale/codec/codecs/array/ArrayCodec;
            //   712: dup            
            //   713: getstatic       com/hypixel/hytale/codec/schema/metadata/ui/UIButton.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   716: invokedynamic   BootstrapMethod #46, apply:()Ljava/util/function/IntFunction;
            //   721: invokespecial   com/hypixel/hytale/codec/codecs/array/ArrayCodec.<init>:(Lcom/hypixel/hytale/codec/Codec;Ljava/util/function/IntFunction;)V
            //   724: iconst_0       
            //   725: iconst_1       
            //   726: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //   729: invokedynamic   BootstrapMethod #47, accept:()Ljava/util/function/BiConsumer;
            //   734: invokedynamic   BootstrapMethod #48, apply:()Ljava/util/function/Function;
            //   739: 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;
            //   742: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   745: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   748: putstatic       com/hypixel/hytale/codec/schema/config/Schema$HytaleMetadata.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   751: 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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: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.addTypeMembers(AstBuilder.java:662)
            //     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.");
        }
    }
    
    public static class InheritSettings
    {
        public static final BuilderCodec<InheritSettings> CODEC;
        private String type;
        private String mapKey;
        private String mapKeyValue;
        
        public InheritSettings(final String type) {
            this.type = type;
        }
        
        protected InheritSettings() {
        }
        
        public String getType() {
            return this.type;
        }
        
        public void setType(final String type) {
            this.type = type;
        }
        
        public String getMapKey() {
            return this.mapKey;
        }
        
        public void setMapKey(final String mapKey) {
            this.mapKey = mapKey;
        }
        
        public String getMapKeyValue() {
            return this.mapKeyValue;
        }
        
        public void setMapKeyValue(final String mapKeyValue) {
            this.mapKeyValue = mapKeyValue;
        }
        
        @Override
        public boolean equals(@Nullable final Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || this.getClass() != o.getClass()) {
                return false;
            }
            final InheritSettings that = (InheritSettings)o;
            Label_0062: {
                if (this.type != null) {
                    if (this.type.equals(that.type)) {
                        break Label_0062;
                    }
                }
                else if (that.type == null) {
                    break Label_0062;
                }
                return false;
            }
            if (this.mapKey != null) {
                if (this.mapKey.equals(that.mapKey)) {
                    return (this.mapKeyValue != null) ? this.mapKeyValue.equals(that.mapKeyValue) : (that.mapKeyValue == null);
                }
            }
            else if (that.mapKey == null) {
                return (this.mapKeyValue != null) ? this.mapKeyValue.equals(that.mapKeyValue) : (that.mapKeyValue == null);
            }
            return false;
        }
        
        @Override
        public int hashCode() {
            int result = (this.type != null) ? this.type.hashCode() : 0;
            result = 31 * result + ((this.mapKey != null) ? this.mapKey.hashCode() : 0);
            result = 31 * result + ((this.mapKeyValue != null) ? this.mapKeyValue.hashCode() : 0);
            return result;
        }
        
        static {
            // 
            // This method could not be decompiled.
            // 
            // Original Bytecode:
            // 
            //     2: invokedynamic   BootstrapMethod #0, get:()Ljava/util/function/Supplier;
            //     7: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    10: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    13: dup            
            //    14: ldc             "type"
            //    16: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    19: iconst_0       
            //    20: iconst_1       
            //    21: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    24: invokedynamic   BootstrapMethod #1, accept:()Ljava/util/function/BiConsumer;
            //    29: invokedynamic   BootstrapMethod #2, apply:()Ljava/util/function/Function;
            //    34: 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;
            //    37: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    40: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    43: dup            
            //    44: ldc             "mapKey"
            //    46: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    49: iconst_0       
            //    50: iconst_1       
            //    51: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    54: invokedynamic   BootstrapMethod #3, accept:()Ljava/util/function/BiConsumer;
            //    59: invokedynamic   BootstrapMethod #4, apply:()Ljava/util/function/Function;
            //    64: 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;
            //    67: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //    70: new             Lcom/hypixel/hytale/codec/KeyedCodec;
            //    73: dup            
            //    74: ldc             "mapKeyValue"
            //    76: getstatic       com/hypixel/hytale/codec/Codec.STRING:Lcom/hypixel/hytale/codec/codecs/simple/StringCodec;
            //    79: iconst_0       
            //    80: iconst_1       
            //    81: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;ZZ)V
            //    84: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
            //    89: invokedynamic   BootstrapMethod #6, apply:()Ljava/util/function/Function;
            //    94: 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;
            //    97: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
            //   100: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   103: putstatic       com/hypixel/hytale/codec/schema/config/Schema$InheritSettings.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
            //   106: 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.visitParameterizedType(TypeSubstitutionVisitor.java:225)
            //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:25)
            //     at com.strobel.assembler.metadata.ParameterizedType.accept(ParameterizedType.java:103)
            //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
            //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitMethod(TypeSubstitutionVisitor.java:314)
            //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2611)
            //     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: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.addTypeMembers(AstBuilder.java:662)
            //     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 ArrayOrNull implements Codec<String[]>
    {
        @Nullable
        @Override
        public String[] decode(@Nonnull final BsonValue bsonValue, @Nonnull final ExtraInfo extraInfo) {
            if (bsonValue.isArray()) {
                return Codec.STRING_ARRAY.decode(bsonValue, extraInfo);
            }
            return null;
        }
        
        @Nonnull
        @Override
        public BsonValue encode(@Nullable final String[] o, final ExtraInfo extraInfo) {
            if (o != null) {
                return Codec.STRING_ARRAY.encode(o, extraInfo);
            }
            return new BsonNull();
        }
        
        @Nonnull
        @Override
        public Schema toSchema(@Nonnull final SchemaContext context) {
            return Schema.anyOf(new ArraySchema(), new NullSchema());
        }
    }
    
    @Deprecated
    private static class StringOrBlank implements Codec<String>
    {
        @Override
        public String decode(@Nonnull final BsonValue bsonValue, final ExtraInfo extraInfo) {
            if (bsonValue.isString()) {
                return Codec.STRING.decode(bsonValue, extraInfo);
            }
            if (bsonValue.isArray()) {
                final BsonArray arr = bsonValue.asArray();
                for (int i = 0; i < arr.size(); ++i) {
                    final BsonValue val = arr.get(i);
                    if (!val.asString().getValue().equals("null")) {
                        return Codec.STRING.decode(val, extraInfo);
                    }
                }
                throw new IllegalArgumentException("Unknown type (in array)");
            }
            return "";
        }
        
        @Nonnull
        @Override
        public BsonValue encode(@Nonnull final String o, final ExtraInfo extraInfo) {
            return Codec.STRING.encode(o, extraInfo);
        }
        
        @Nonnull
        @Override
        public Schema toSchema(@Nonnull final SchemaContext context) {
            return Schema.anyOf(new ArraySchema(), new StringSchema());
        }
    }
    
    @Deprecated
    protected static class BooleanOrSchema implements Codec<Object>
    {
        @Override
        public Object decode(@Nonnull final BsonValue bsonValue, final ExtraInfo extraInfo) {
            if (bsonValue.isBoolean()) {
                return Codec.BOOLEAN.decode(bsonValue, extraInfo);
            }
            return Schema.CODEC.decode(bsonValue, extraInfo);
        }
        
        @Override
        public BsonValue encode(final Object o, final ExtraInfo extraInfo) {
            if (o instanceof final Boolean b) {
                return Codec.BOOLEAN.encode(b, extraInfo);
            }
            return Schema.CODEC.encode((Schema)o, extraInfo);
        }
        
        @Nonnull
        @Override
        public Schema toSchema(@Nonnull final SchemaContext context) {
            return Schema.anyOf(new BooleanSchema(), Schema.CODEC.toSchema(context));
        }
    }
}
