HytaleMetadata class

Пакет: com.hypixel.hytale.codec.schema.config

Файл: com/hypixel/hytale/codec/schema/config/Schema.java

Поля (45)

МодификаторыТипИмя
public static final BuilderCodec<Schema.HytaleMetadata> CODEC
private Boolean allowEmptyObject
private String extension
private String idProvider
private Boolean inheritsProperty
private String[] internalKeys
private Boolean mergesProperties
private String path
private String type
private Boolean uiCollapsedByDefault
private UIButton[] uiCreateButtons
private UIDisplayMode.DisplayMode uiDisplayMode
private UIEditor.EditorComponent uiEditorComponent
private UIEditorFeatures.EditorFeature[] uiEditorFeatures
private Boolean uiEditorIgnore
private UIEditorPreview.PreviewType uiEditorPreview
private String uiPropertyTitle
private UIRebuildCaches.ClientCache[] uiRebuildCaches
private Boolean uiRebuildCachesForChildProperties
private String uiSectionStart
private UIButton[] uiSidebarButtons
private String uiTypeIcon
int var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
Schema.HytaleMetadata var2
private String virtualPath

Методы (49)

МодификаторыВозвратСигнатура
public boolean equalspublic boolean equals(@Nullable Object var1)
public Boolean getAllowEmptyObjectpublic Boolean getAllowEmptyObject()
public String getExtensionpublic String getExtension()
public String getIdProviderpublic String getIdProvider()
public String[] getInternalKeyspublic String[] getInternalKeys()
public boolean getMergesPropertiespublic boolean getMergesProperties()
public String getPathpublic String getPath()
public String getTypepublic String getType()
public Boolean getUiCollapsedByDefaultpublic Boolean getUiCollapsedByDefault()
public UIButton[] getUiCreateButtonspublic UIButton[] getUiCreateButtons()
public UIDisplayMode.DisplayMode getUiDisplayModepublic UIDisplayMode.DisplayMode getUiDisplayMode()
public UIEditor.EditorComponent getUiEditorComponentpublic UIEditor.EditorComponent getUiEditorComponent()
public UIEditorFeatures.EditorFeature[] getUiEditorFeaturespublic UIEditorFeatures.EditorFeature[] getUiEditorFeatures()
public Boolean getUiEditorIgnorepublic Boolean getUiEditorIgnore()
public UIEditorPreview.PreviewType getUiEditorPreviewpublic UIEditorPreview.PreviewType getUiEditorPreview()
public String getUiPropertyTitlepublic String getUiPropertyTitle()
public UIRebuildCaches.ClientCache[] getUiRebuildCachespublic UIRebuildCaches.ClientCache[] getUiRebuildCaches()
public Boolean getUiRebuildCachesForChildPropertiespublic Boolean getUiRebuildCachesForChildProperties()
public String getUiSectionStartpublic String getUiSectionStart()
public UIButton[] getUiSidebarButtonspublic UIButton[] getUiSidebarButtons()
public String getUiTypeIconpublic String getUiTypeIcon()
public String getVirtualPathpublic String getVirtualPath()
public int hashCodepublic int hashCode()
if if(this == var1)
if if(this.uiEditorPreview != var2.uiEditorPreview)
if if(this.uiDisplayMode != var2.uiDisplayMode)
public boolean isInheritsPropertypublic boolean isInheritsProperty()
public void setAllowEmptyObjectpublic void setAllowEmptyObject(Boolean var1)
public void setExtensionpublic void setExtension(String var1)
public void setIdProviderpublic void setIdProvider(String var1)
public void setInheritsPropertypublic void setInheritsProperty(boolean var1)
public void setInternalKeyspublic void setInternalKeys(String[] var1)
public void setMergesPropertiespublic void setMergesProperties(boolean var1)
public void setPathpublic void setPath(String var1)
public void setTypepublic void setType(String var1)
public void setUiCollapsedByDefaultpublic void setUiCollapsedByDefault(Boolean var1)
public void setUiCreateButtonspublic void setUiCreateButtons(UIButton[] var1)
public void setUiDisplayModepublic void setUiDisplayMode(UIDisplayMode.DisplayMode var1)
public void setUiEditorComponentpublic void setUiEditorComponent(UIEditor.EditorComponent var1)
public void setUiEditorFeaturespublic void setUiEditorFeatures(UIEditorFeatures.EditorFeature[] var1)
public void setUiEditorIgnorepublic void setUiEditorIgnore(Boolean var1)
public void setUiEditorPreviewpublic void setUiEditorPreview(UIEditorPreview.PreviewType var1)
public void setUiPropertyTitlepublic void setUiPropertyTitle(String var1)
public void setUiRebuildCachespublic void setUiRebuildCaches(UIRebuildCaches.ClientCache[] var1)
public void setUiRebuildCachesForChildPropertiespublic void setUiRebuildCachesForChildProperties(Boolean var1)
public void setUiSectionStartpublic void setUiSectionStart(String var1)
public void setUiSidebarButtonspublic void setUiSidebarButtons(UIButton[] var1)
public void setUiTypeIconpublic void setUiTypeIcon(String var1)
public void setVirtualPathpublic void setVirtualPath(String var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.codec.schema.config;

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

class="kw">public class Schema {
   class="kw">public class="kw">static class="kw">final ObjectCodecMapCodec<String, Schema> CODEC = new ObjectCodecMapCodec<>("type", new Schema.StringOrBlank(), true, false);
   class="kw">public class="kw">static class="kw">final ArrayCodec<Schema> ARRAY_CODEC = new ArrayCodec<>(CODEC, Schema[]::new);
   class="kw">public class="kw">static class="kw">final BuilderCodec<Schema> BASE_CODEC = BuilderCodec.builder(Schema.class, Schema::new)
      .append(new KeyedCodec<>("$id", Codec.STRING, false, true), (var0, var1) -> var0.id = var1, var0 -> var0.id)
      .add()
      .append(new KeyedCodec<>("type", new Schema.ArrayOrNull(), false, true), (var0, var1) -> var0.types = var1, var0 -> var0.types)
      .add()
      .append(new KeyedCodec<>("title", Codec.STRING, false, true), (var0, var1) -> var0.title = var1, var0 -> var0.title)
      .add()
      .append(
         new KeyedCodec<>("description", Codec.STRING, false, true),
         (var0, var1) -> var0.description = var1,
         var0 -> var0.description == null && var0.markdownDescription != null ? Documentation.stripMarkdown(var0.markdownDescription) : var0.description
      )
      .add()
      .append(
         new KeyedCodec<>("markdownDescription", Codec.STRING, false, true), (var0, var1) -> var0.markdownDescription = var1, var0 -> var0.markdownDescription
      )
      .add()
      .append(new KeyedCodec<>("enumDescriptions", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.enumDescriptions = var1, var0 -> {
         if (var0.enumDescriptions == null && var0.markdownEnumDescriptions != null) {
            String[] var1 = new String[var0.markdownEnumDescriptions.length];

            for (int var2 = 0; var2 < var1.length; var2++) {
               var1[var2] = Documentation.stripMarkdown(var0.markdownEnumDescriptions[var2]);
            }

            class="kw">return var1;
         } else {
            class="kw">return var0.enumDescriptions;
         }
      })
      .add()
      .append(
         new KeyedCodec<>("markdownEnumDescriptions", Codec.STRING_ARRAY, false, true),
         (var0, var1) -> var0.markdownEnumDescriptions = var1,
         var0 -> var0.markdownEnumDescriptions
      )
      .add()
      .append(new KeyedCodec<>("anyOf", ARRAY_CODEC, false, true), (var0, var1) -> var0.anyOf = var1, var0 -> var0.anyOf)
      .add()
      .append(new KeyedCodec<>("oneOf", ARRAY_CODEC, false, true), (var0, var1) -> var0.oneOf = var1, var0 -> var0.oneOf)
      .add()
      .append(new KeyedCodec<>("allOf", ARRAY_CODEC, false, true), (var0, var1) -> var0.allOf = var1, var0 -> var0.allOf)
      .add()
      .append(new KeyedCodec<>("not", CODEC, false, true), (var0, var1) -> var0.not = var1, var0 -> var0.not)
      .add()
      .append(new KeyedCodec<>("if", CODEC, false, true), (var0, var1) -> var0.if_ = var1, var0 -> var0.if_)
      .add()
      .append(new KeyedCodec<>("then", CODEC, false, true), (var0, var1) -> var0.then = var1, var0 -> var0.then)
      .add()
      .append(new KeyedCodec<>("else", new Schema.BooleanOrSchema(), false, true), (var0, var1) -> var0.else_ = var1, var0 -> var0.else_)
      .add()
      .append(new KeyedCodec<>("required", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.required = var1, var0 -> var0.required)
      .add()
      .append(new KeyedCodec<>("class="kw">default", Codec.BSON_DOCUMENT, false, true), (var0, var1) -> var0.default_ = var1, var0 -> var0.default_)
      .add()
      .append(
         new KeyedCodec<>("definitions", new MapCodec<>(CODEC, HashMap::new), false, true), (var0, var1) -> var0.definitions = var1, var0 -> var0.definitions
      )
      .add()
      .append(new KeyedCodec<>("$ref", Codec.STRING, false, true), (var0, var1) -> var0.ref = var1, var0 -> var0.ref)
      .add()
      .append(new KeyedCodec<>("$data", Codec.STRING, false, true), (var0, var1) -> var0.data = var1, var0 -> var0.data)
      .add()
      .append(new KeyedCodec<>("doNotSuggest", Codec.BOOLEAN, false, true), (var0, var1) -> var0.doNotSuggest = var1, var0 -> var0.doNotSuggest)
      .add()
      .append(new KeyedCodec<>("hytaleAssetRef", Codec.STRING, false, true), (var0, var1) -> var0.hytaleAssetRef = var1, var0 -> var0.hytaleAssetRef)
      .add()
      .append(
         new KeyedCodec<>("hytaleCustomAssetRef", Codec.STRING, false, true),
         (var0, var1) -> var0.hytaleCustomAssetRef = var1,
         var0 -> var0.hytaleCustomAssetRef
      )
      .add()
      .append(new KeyedCodec<>("hytaleParent", Schema.InheritSettings.CODEC, false, true), (var0, var1) -> var0.hytaleParent = var1, var0 -> var0.hytaleParent)
      .add()
      .append(
         new KeyedCodec<>("hytaleSchemaTypeField", Schema.SchemaTypeField.CODEC, false, true),
         (var0, var1) -> var0.hytaleSchemaTypeField = var1,
         var0 -> var0.hytaleSchemaTypeField
      )
      .add()
      .append(new KeyedCodec<>("hytale", Schema.HytaleMetadata.CODEC, false, true), (var0, var1) -> {
         if (var1.type == null) {
            var1.type = CODEC.getIdFor((Class<? class="kw">extends Schema>)var0.getClass());
         }

         var0.hytale = var1;
      }, var0 -> var0.hytale)
      .add()
      .build();
   class="kw">private String id;
   class="kw">private String[] types;
   class="kw">private String title;
   class="kw">private String description;
   class="kw">private String markdownDescription;
   class="kw">private Schema[] anyOf;
   class="kw">private Schema[] oneOf;
   class="kw">private Schema[] allOf;
   class="kw">private Schema not;
   class="kw">private String[] required;
   class="kw">private String[] enumDescriptions;
   class="kw">private String[] markdownEnumDescriptions;
   class="kw">private Map<String, Schema> definitions;
   class="kw">private String ref;
   class="kw">private String data;
   class="kw">private BsonDocument default_;
   class="kw">private Schema if_;
   class="kw">private Schema then;
   class="kw">private Object else_;
   class="kw">private Schema.HytaleMetadata hytale;
   class="kw">private Schema.InheritSettings hytaleParent;
   class="kw">private Schema.SchemaTypeField hytaleSchemaTypeField;
   class="kw">private String hytaleAssetRef;
   class="kw">private String hytaleCustomAssetRef;
   class="kw">private Boolean doNotSuggest;

   class="kw">public Schema() {
      String var1 = CODEC.getIdFor((Class<? class="kw">extends Schema>)this.getClass());
      if (var1 != null && !var1.isBlank()) {
         this.hytale = new Schema.HytaleMetadata(var1);
      }
   }

   class="kw">public String getId() {
      class="kw">return this.id;
   }

   class="kw">public void setId(String var1) {
      this.id = var1;
   }

   class="kw">public String[] getTypes() {
      class="kw">return this.types;
   }

   class="kw">public void setTypes(String[] var1) {
      this.types = var1;
   }

   class="kw">public String getTitle() {
      class="kw">return this.title;
   }

   class="kw">public void setTitle(String var1) {
      this.title = var1;
   }

   class="kw">public String getDescription() {
      class="kw">return this.description;
   }

   class="kw">public void setDescription(String var1) {
      this.description = var1;
   }

   class="kw">public String getMarkdownDescription() {
      class="kw">return this.markdownDescription;
   }

   class="kw">public void setMarkdownDescription(String var1) {
      this.markdownDescription = var1;
   }

   class="kw">public String[] getEnumDescriptions() {
      class="kw">return this.enumDescriptions;
   }

   class="kw">public void setEnumDescriptions(String[] var1) {
      this.enumDescriptions = var1;
   }

   class="kw">public String[] getMarkdownEnumDescriptions() {
      class="kw">return this.markdownEnumDescriptions;
   }

   class="kw">public void setMarkdownEnumDescriptions(String[] var1) {
      this.markdownEnumDescriptions = var1;
   }

   class="kw">public Schema[] getAnyOf() {
      class="kw">return this.anyOf;
   }

   class="kw">public void setAnyOf(Schema... var1) {
      this.anyOf = var1;
   }

   class="kw">public Schema[] getOneOf() {
      class="kw">return this.oneOf;
   }

   class="kw">public void setOneOf(Schema... var1) {
      this.oneOf = var1;
   }

   class="kw">public Schema[] getAllOf() {
      class="kw">return this.allOf;
   }

   class="kw">public void setAllOf(Schema... var1) {
      this.allOf = var1;
   }

   class="kw">public String[] getRequired() {
      class="kw">return this.required;
   }

   class="kw">public void setRequired(String... var1) {
      this.required = var1;
   }

   class="kw">public BsonDocument getDefaultRaw() {
      class="kw">return this.default_;
   }

   class="kw">public void setDefaultRaw(BsonDocument var1) {
      this.default_ = var1;
   }

   class="kw">public Map<String, Schema> getDefinitions() {
      class="kw">return this.definitions;
   }

   class="kw">public void setDefinitions(Map<String, Schema> var1) {
      this.definitions = var1;
   }

   class="kw">public String getRef() {
      class="kw">return this.ref;
   }

   class="kw">public void setRef(String var1) {
      this.ref = var1;
   }

   class="kw">public String getData() {
      class="kw">return this.data;
   }

   class="kw">public void setData(String var1) {
      this.data = var1;
   }

   class="kw">public Schema getIf() {
      class="kw">return this.if_;
   }

   class="kw">public void setIf(Schema var1) {
      this.if_ = var1;
   }

   class="kw">public Schema getThen() {
      class="kw">return this.then;
   }

   class="kw">public void setThen(Schema var1) {
      this.then = var1;
   }

   class="kw">public Schema getElse() {
      class="kw">return (Schema)this.else_;
   }

   class="kw">public void setElse(Schema var1) {
      this.else_ = var1;
   }

   class="kw">public void setElse(boolean var1) {
      this.else_ = var1;
   }

   class="kw">public Boolean isDoNotSuggest() {
      class="kw">return this.doNotSuggest;
   }

   class="kw">public void setDoNotSuggest(boolean var1) {
      this.doNotSuggest = var1;
   }

   @Nullable
   class="kw">public Schema.HytaleMetadata getHytale() {
      class="kw">return this.getHytale(true);
   }

   @Nullable
   class="kw">public Schema.HytaleMetadata getHytale(boolean var1) {
      if (var1 && this.hytale == null) {
         this.hytale = new Schema.HytaleMetadata();
         this.hytale.type = CODEC.getIdFor((Class<? class="kw">extends Schema>)this.getClass());
      }

      class="kw">return this.hytale;
   }

   class="kw">public String getHytaleAssetRef() {
      class="kw">return this.hytaleAssetRef;
   }

   class="kw">public void setHytaleAssetRef(String var1) {
      this.hytaleAssetRef = var1;
   }

   class="kw">public Schema.InheritSettings getHytaleParent() {
      class="kw">return this.hytaleParent;
   }

   class="kw">public void setHytaleParent(Schema.InheritSettings var1) {
      this.hytaleParent = var1;
   }

   class="kw">public Schema.SchemaTypeField getHytaleSchemaTypeField() {
      class="kw">return this.hytaleSchemaTypeField;
   }

   class="kw">public void setHytaleSchemaTypeField(Schema.SchemaTypeField var1) {
      this.hytaleSchemaTypeField = var1;
   }

   class="kw">public String getHytaleCustomAssetRef() {
      class="kw">return this.hytaleCustomAssetRef;
   }

   class="kw">public void setHytaleCustomAssetRef(String var1) {
      this.hytaleCustomAssetRef = var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema ref(String var0) {
      Schema var1 = new Schema();
      var1.setRef(var0);
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema data(String var0) {
      Schema var1 = new Schema();
      var1.setData(var0);
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema anyOf(Schema... var0) {
      Schema var1 = new Schema();
      var1.anyOf = var0;
      class="kw">return var1;
   }

   @Nonnull
   class="kw">public class="kw">static Schema not(Schema var0) {
      Schema var1 = new Schema();
      var1.not = var0;
      class="kw">return var1;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 != null && this.getClass() == var1.getClass()) {
         Schema var2 = (Schema)var1;
         if (this.id != null ? this.id.equals(var2.id) : var2.id == null) {
            if (!Arrays.equals(this.types, var2.types)) {
               class="kw">return false;
            }

            if (this.title != null ? this.title.equals(var2.title) : var2.title == null) {
               if (this.description != null ? this.description.equals(var2.description) : var2.description == null) {
                  if (this.markdownDescription != null ? this.markdownDescription.equals(var2.markdownDescription) : var2.markdownDescription == null) {
                     if (!Arrays.equals(this.anyOf, var2.anyOf)) {
                        class="kw">return false;
                     }

                     if (!Arrays.equals(this.oneOf, var2.oneOf)) {
                        class="kw">return false;
                     }

                     if (!Arrays.equals(this.allOf, var2.allOf)) {
                        class="kw">return false;
                     }

                     if (this.not != null ? this.not.equals(var2.not) : var2.not == null) {
                        if (!Arrays.equals(this.required, var2.required)) {
                           class="kw">return false;
                        }

                        if (!Arrays.equals(this.enumDescriptions, var2.enumDescriptions)) {
                           class="kw">return false;
                        }

                        if (!Arrays.equals(this.markdownEnumDescriptions, var2.markdownEnumDescriptions)) {
                           class="kw">return false;
                        }

                        if (this.definitions != null ? this.definitions.equals(var2.definitions) : var2.definitions == null) {
                           if (this.ref != null ? this.ref.equals(var2.ref) : var2.ref == null) {
                              if (this.data != null ? this.data.equals(var2.data) : var2.data == null) {
                                 if (this.default_ != null ? this.default_.equals(var2.default_) : var2.default_ == null) {
                                    if (this.hytale != null ? this.hytale.equals(var2.hytale) : var2.hytale == null) {
                                       if (this.hytaleParent != null ? this.hytaleParent.equals(var2.hytaleParent) : var2.hytaleParent == null) {
                                          if (this.hytaleSchemaTypeField != null
                                             ? this.hytaleSchemaTypeField.equals(var2.hytaleSchemaTypeField)
                                             : var2.hytaleSchemaTypeField == null) {
                                             if (this.hytaleAssetRef != null ? this.hytaleAssetRef.equals(var2.hytaleAssetRef) : var2.hytaleAssetRef == null) {
                                                if (this.if_ != null ? this.if_.equals(var2.if_) : var2.if_ == null) {
                                                   if (this.then != null ? this.then.equals(var2.then) : var2.then == null) {
                                                      if (this.else_ != null ? this.else_.equals(var2.else_) : var2.else_ == null) {
                                                         if (this.doNotSuggest != null
                                                            ? this.doNotSuggest.equals(var2.doNotSuggest)
                                                            : var2.doNotSuggest == null) {
                                                            class="kw">return this.hytaleCustomAssetRef != null
                                                               ? this.hytaleCustomAssetRef.equals(var2.hytaleCustomAssetRef)
                                                               : var2.hytaleCustomAssetRef == null;
                                                         } else {
                                                            class="kw">return false;
                                                         }
                                                      } else {
                                                         class="kw">return false;
                                                      }
                                                   } else {
                                                      class="kw">return false;
                                                   }
                                                } else {
                                                   class="kw">return false;
                                                }
                                             } else {
                                                class="kw">return false;
                                             }
                                          } else {
                                             class="kw">return false;
                                          }
                                       } else {
                                          class="kw">return false;
                                       }
                                    } else {
                                       class="kw">return false;
                                    }
                                 } else {
                                    class="kw">return false;
                                 }
                              } else {
                                 class="kw">return false;
                              }
                           } else {
                              class="kw">return false;
                           }
                        } else {
                           class="kw">return false;
                        }
                     } else {
                        class="kw">return false;
                     }
                  } else {
                     class="kw">return false;
                  }
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = this.id != null ? this.id.hashCode() : 0;
      var1 = 31 * var1 + Arrays.hashCode(this.types);
      var1 = 31 * var1 + (this.title != null ? this.title.hashCode() : 0);
      var1 = 31 * var1 + (this.description != null ? this.description.hashCode() : 0);
      var1 = 31 * var1 + (this.markdownDescription != null ? this.markdownDescription.hashCode() : 0);
      var1 = 31 * var1 + Arrays.hashCode(this.anyOf);
      var1 = 31 * var1 + Arrays.hashCode(this.oneOf);
      var1 = 31 * var1 + Arrays.hashCode(this.allOf);
      var1 = 31 * var1 + (this.not != null ? this.not.hashCode() : 0);
      var1 = 31 * var1 + Arrays.hashCode(this.required);
      var1 = 31 * var1 + Arrays.hashCode(this.enumDescriptions);
      var1 = 31 * var1 + Arrays.hashCode(this.markdownEnumDescriptions);
      var1 = 31 * var1 + (this.definitions != null ? this.definitions.hashCode() : 0);
      var1 = 31 * var1 + (this.ref != null ? this.ref.hashCode() : 0);
      var1 = 31 * var1 + (this.data != null ? this.data.hashCode() : 0);
      var1 = 31 * var1 + (this.default_ != null ? this.default_.hashCode() : 0);
      var1 = 31 * var1 + (this.hytale != null ? this.hytale.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleParent != null ? this.hytaleParent.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleSchemaTypeField != null ? this.hytaleSchemaTypeField.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleAssetRef != null ? this.hytaleAssetRef.hashCode() : 0);
      var1 = 31 * var1 + (this.hytaleCustomAssetRef != null ? this.hytaleCustomAssetRef.hashCode() : 0);
      var1 = 31 * var1 + (this.if_ != null ? this.if_.hashCode() : 0);
      var1 = 31 * var1 + (this.then != null ? this.then.hashCode() : 0);
      var1 = 31 * var1 + (this.else_ != null ? this.else_.hashCode() : 0);
      class="kw">return 31 * var1 + (this.doNotSuggest != null ? this.doNotSuggest.hashCode() : 0);
   }

   class="kw">public class="kw">static void init() {
      CODEC.register(Priority.DEFAULT, "", Schema.class, BASE_CODEC);
      CODEC.register("null", NullSchema.class, NullSchema.CODEC);
      CODEC.register("string", StringSchema.class, StringSchema.CODEC);
      CODEC.register("number", NumberSchema.class, NumberSchema.CODEC);
      CODEC.register("integer", IntegerSchema.class, IntegerSchema.CODEC);
      CODEC.register("array", ArraySchema.class, ArraySchema.CODEC);
      CODEC.register("boolean", BooleanSchema.class, BooleanSchema.CODEC);
      CODEC.register("object", ObjectSchema.class, ObjectSchema.CODEC);
      UIEditor.init();
   }

   @Deprecated
   class="kw">private class="kw">static class ArrayOrNull class="kw">implements Codec<String[]> {
      class="kw">private ArrayOrNull() {
      }

      @Nullable
      class="kw">public String[] decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2) {
         class="kw">return var1.isArray() ? Codec.STRING_ARRAY.decode(var1, var2) : null;
      }

      @Nonnull
      class="kw">public BsonValue encode(@Nullable String[] var1, ExtraInfo var2) {
         class="kw">return (BsonValue)(var1 != null ? Codec.STRING_ARRAY.encode(var1, var2) : new BsonNull());
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new ArraySchema(), new NullSchema());
      }
   }

   @Deprecated
   class="kw">protected class="kw">static class BooleanOrSchema class="kw">implements Codec<Object> {
      class="kw">protected BooleanOrSchema() {
      }

      @Override
      class="kw">public Object decode(@Nonnull BsonValue var1, ExtraInfo var2) {
         class="kw">return var1.isBoolean() ? Codec.BOOLEAN.decode(var1, var2) : Schema.CODEC.decode(var1, var2);
      }

      @Override
      class="kw">public BsonValue encode(Object var1, ExtraInfo var2) {
         class="kw">return var1 class="kw">instanceof Boolean ? Codec.BOOLEAN.encode((Boolean)var1, var2) : Schema.CODEC.encode((Schema)var1, var2);
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new BooleanSchema(), Schema.CODEC.toSchema(var1));
      }
   }

   class="kw">public class="kw">static class HytaleMetadata {
      class="kw">public class="kw">static class="kw">final BuilderCodec<Schema.HytaleMetadata> CODEC = BuilderCodec.builder(Schema.HytaleMetadata.class, Schema.HytaleMetadata::new)
         .append(
            new KeyedCodec<>("type", Codec.STRING, false, true),
            (var0, var1) -> var0.type = var1,
            var0 -> var0.type != null && var0.type.isEmpty() ? null : var0.type
         )
         .add()
         .append(new KeyedCodec<>("internalKeys", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.internalKeys = var1, var0 -> var0.internalKeys)
         .add()
         .append(new KeyedCodec<>("path", Codec.STRING, false, true), (var0, var1) -> var0.path = var1, var0 -> var0.path)
         .add()
         .append(new KeyedCodec<>("virtualPath", Codec.STRING, false, true), (var0, var1) -> var0.virtualPath = var1, var0 -> var0.virtualPath)
         .add()
         .append(new KeyedCodec<>("extension", Codec.STRING, false, true), (var0, var1) -> var0.extension = var1, var0 -> var0.extension)
         .add()
         .append(new KeyedCodec<>("idProvider", Codec.STRING, false, true), (var0, var1) -> var0.idProvider = var1, var0 -> var0.idProvider)
         .add()
         .append(new KeyedCodec<>("inheritsProperty", Codec.BOOLEAN, false, true), (var0, var1) -> var0.inheritsProperty = var1, var0 -> var0.inheritsProperty)
         .add()
         .append(new KeyedCodec<>("mergesProperties", Codec.BOOLEAN, false, true), (var0, var1) -> var0.mergesProperties = var1, var0 -> var0.mergesProperties)
         .add()
         .append(
            new KeyedCodec<>("uiDisplayMode", new EnumCodec<>(UIDisplayMode.DisplayMode.class), false, true),
            (var0, var1) -> var0.uiDisplayMode = var1,
            var0 -> var0.uiDisplayMode
         )
         .add()
         .append(
            new KeyedCodec<>("uiEditorComponent", UIEditor.CODEC, false, true), (var0, var1) -> var0.uiEditorComponent = var1, var0 -> var0.uiEditorComponent
         )
         .add()
         .append(new KeyedCodec<>("allowEmptyObject", Codec.BOOLEAN, false, true), (var0, var1) -> var0.allowEmptyObject = var1, var0 -> var0.allowEmptyObject)
         .add()
         .append(new KeyedCodec<>("uiEditorIgnore", Codec.BOOLEAN, false, true), (var0, var1) -> var0.uiEditorIgnore = var1, var0 -> var0.uiEditorIgnore)
         .add()
         .append(
            new KeyedCodec<>(
               "uiEditorFeatures", new ArrayCodec<>(new EnumCodec<>(UIEditorFeatures.EditorFeature.class), UIEditorFeatures.EditorFeature[]::new), false, true
            ),
            (var0, var1) -> var0.uiEditorFeatures = var1,
            var0 -> var0.uiEditorFeatures
         )
         .add()
         .append(
            new KeyedCodec<>("uiEditorPreview", new EnumCodec<>(UIEditorPreview.PreviewType.class), false, true),
            (var0, var1) -> var0.uiEditorPreview = var1,
            var0 -> var0.uiEditorPreview
         )
         .add()
         .append(new KeyedCodec<>("uiTypeIcon", Codec.STRING, false, true), (var0, var1) -> var0.uiTypeIcon = var1, var0 -> var0.uiTypeIcon)
         .add()
         .append(new KeyedCodec<>("uiPropertyTitle", Codec.STRING, false, true), (var0, var1) -> var0.uiPropertyTitle = var1, var0 -> var0.uiPropertyTitle)
         .add()
         .append(new KeyedCodec<>("uiSectionStart", Codec.STRING, false, true), (var0, var1) -> var0.uiSectionStart = var1, var0 -> var0.uiSectionStart)
         .add()
         .append(
            new KeyedCodec<>(
               "uiRebuildCaches", new ArrayCodec<>(new EnumCodec<>(UIRebuildCaches.ClientCache.class), UIRebuildCaches.ClientCache[]::new), false, true
            ),
            (var0, var1) -> var0.uiRebuildCaches = var1,
            var0 -> var0.uiRebuildCaches
         )
         .add()
         .append(
            new KeyedCodec<>("uiSidebarButtons", new ArrayCodec<>(UIButton.CODEC, UIButton[]::new), false, true),
            (var0, var1) -> var0.uiSidebarButtons = var1,
            var0 -> var0.uiSidebarButtons
         )
         .add()
         .append(
            new KeyedCodec<>("uiRebuildCachesForChildProperties", Codec.BOOLEAN, false, true),
            (var0, var1) -> var0.uiRebuildCachesForChildProperties = var1,
            var0 -> var0.uiRebuildCachesForChildProperties
         )
         .add()
         .append(
            new KeyedCodec<>("uiCollapsedByDefault", Codec.BOOLEAN, false, true),
            (var0, var1) -> var0.uiCollapsedByDefault = var1,
            var0 -> var0.uiCollapsedByDefault
         )
         .add()
         .append(
            new KeyedCodec<>("uiCreateButtons", new ArrayCodec<>(UIButton.CODEC, UIButton[]::new), false, true),
            (var0, var1) -> var0.uiCreateButtons = var1,
            var0 -> var0.uiCreateButtons
         )
         .add()
         .build();
      class="kw">private String type;
      class="kw">private String path;
      class="kw">private String virtualPath;
      class="kw">private String extension;
      class="kw">private String idProvider;
      class="kw">private String[] internalKeys;
      class="kw">private Boolean inheritsProperty;
      class="kw">private Boolean mergesProperties;
      class="kw">private UIEditorFeatures.EditorFeature[] uiEditorFeatures;
      class="kw">private UIEditorPreview.PreviewType uiEditorPreview;
      class="kw">private String uiTypeIcon;
      class="kw">private Boolean uiEditorIgnore;
      class="kw">private Boolean allowEmptyObject;
      class="kw">private UIDisplayMode.DisplayMode uiDisplayMode;
      class="kw">private UIEditor.EditorComponent uiEditorComponent;
      class="kw">private String uiPropertyTitle;
      class="kw">private String uiSectionStart;
      class="kw">private UIRebuildCaches.ClientCache[] uiRebuildCaches;
      class="kw">private Boolean uiRebuildCachesForChildProperties;
      class="kw">private UIButton[] uiSidebarButtons;
      class="kw">private Boolean uiCollapsedByDefault;
      class="kw">private UIButton[] uiCreateButtons;

      class="kw">public HytaleMetadata(String var1) {
         this.type = var1;
      }

      class="kw">public HytaleMetadata() {
      }

      class="kw">public String getType() {
         class="kw">return this.type;
      }

      class="kw">public void setType(String var1) {
         this.type = var1;
      }

      class="kw">public String getPath() {
         class="kw">return this.path;
      }

      class="kw">public void setPath(String var1) {
         this.path = var1;
      }

      class="kw">public String getVirtualPath() {
         class="kw">return this.virtualPath;
      }

      class="kw">public void setVirtualPath(String var1) {
         this.virtualPath = var1;
      }

      class="kw">public String getExtension() {
         class="kw">return this.extension;
      }

      class="kw">public void setExtension(String var1) {
         this.extension = var1;
      }

      class="kw">public String getIdProvider() {
         class="kw">return this.idProvider;
      }

      class="kw">public void setIdProvider(String var1) {
         this.idProvider = var1;
      }

      class="kw">public String[] getInternalKeys() {
         class="kw">return this.internalKeys;
      }

      class="kw">public void setInternalKeys(String[] var1) {
         this.internalKeys = var1;
      }

      class="kw">public UIDisplayMode.DisplayMode getUiDisplayMode() {
         class="kw">return this.uiDisplayMode;
      }

      class="kw">public void setUiDisplayMode(UIDisplayMode.DisplayMode var1) {
         this.uiDisplayMode = var1;
      }

      class="kw">public UIEditor.EditorComponent getUiEditorComponent() {
         class="kw">return this.uiEditorComponent;
      }

      class="kw">public void setUiEditorComponent(UIEditor.EditorComponent var1) {
         this.uiEditorComponent = var1;
      }

      class="kw">public UIEditorFeatures.EditorFeature[] getUiEditorFeatures() {
         class="kw">return this.uiEditorFeatures;
      }

      class="kw">public void setUiEditorFeatures(UIEditorFeatures.EditorFeature[] var1) {
         this.uiEditorFeatures = var1;
      }

      class="kw">public UIEditorPreview.PreviewType getUiEditorPreview() {
         class="kw">return this.uiEditorPreview;
      }

      class="kw">public void setUiEditorPreview(UIEditorPreview.PreviewType var1) {
         this.uiEditorPreview = var1;
      }

      class="kw">public String getUiTypeIcon() {
         class="kw">return this.uiTypeIcon;
      }

      class="kw">public void setUiTypeIcon(String var1) {
         this.uiTypeIcon = var1;
      }

      class="kw">public Boolean getUiEditorIgnore() {
         class="kw">return this.uiEditorIgnore;
      }

      class="kw">public void setUiEditorIgnore(Boolean var1) {
         this.uiEditorIgnore = var1;
      }

      class="kw">public Boolean getAllowEmptyObject() {
         class="kw">return this.allowEmptyObject;
      }

      class="kw">public void setAllowEmptyObject(Boolean var1) {
         this.allowEmptyObject = var1;
      }

      class="kw">public String getUiPropertyTitle() {
         class="kw">return this.uiPropertyTitle;
      }

      class="kw">public void setUiPropertyTitle(String var1) {
         this.uiPropertyTitle = var1;
      }

      class="kw">public String getUiSectionStart() {
         class="kw">return this.uiSectionStart;
      }

      class="kw">public void setUiSectionStart(String var1) {
         this.uiSectionStart = var1;
      }

      class="kw">public boolean isInheritsProperty() {
         class="kw">return this.inheritsProperty;
      }

      class="kw">public void setInheritsProperty(boolean var1) {
         this.inheritsProperty = var1;
      }

      class="kw">public boolean getMergesProperties() {
         class="kw">return this.mergesProperties;
      }

      class="kw">public void setMergesProperties(boolean var1) {
         this.mergesProperties = var1;
      }

      class="kw">public UIRebuildCaches.ClientCache[] getUiRebuildCaches() {
         class="kw">return this.uiRebuildCaches;
      }

      class="kw">public void setUiRebuildCaches(UIRebuildCaches.ClientCache[] var1) {
         this.uiRebuildCaches = var1;
      }

      class="kw">public Boolean getUiRebuildCachesForChildProperties() {
         class="kw">return this.uiRebuildCachesForChildProperties;
      }

      class="kw">public void setUiRebuildCachesForChildProperties(Boolean var1) {
         this.uiRebuildCachesForChildProperties = var1;
      }

      class="kw">public UIButton[] getUiSidebarButtons() {
         class="kw">return this.uiSidebarButtons;
      }

      class="kw">public void setUiSidebarButtons(UIButton[] var1) {
         this.uiSidebarButtons = var1;
      }

      class="kw">public Boolean getUiCollapsedByDefault() {
         class="kw">return this.uiCollapsedByDefault;
      }

      class="kw">public void setUiCollapsedByDefault(Boolean var1) {
         this.uiCollapsedByDefault = var1;
      }

      class="kw">public UIButton[] getUiCreateButtons() {
         class="kw">return this.uiCreateButtons;
      }

      class="kw">public void setUiCreateButtons(UIButton[] var1) {
         this.uiCreateButtons = var1;
      }

      @Override
      class="kw">public boolean equals(@Nullable Object var1) {
         if (this == var1) {
            class="kw">return true;
         }

         if (var1 != null && this.getClass() == var1.getClass()) {
            Schema.HytaleMetadata var2 = (Schema.HytaleMetadata)var1;
            if (this.type != null ? this.type.equals(var2.type) : var2.type == null) {
               if (this.path != null ? this.path.equals(var2.path) : var2.path == null) {
                  if (this.virtualPath != null ? this.virtualPath.equals(var2.virtualPath) : var2.virtualPath == null) {
                     if (this.extension != null ? this.extension.equals(var2.extension) : var2.extension == null) {
                        if (this.idProvider != null ? this.idProvider.equals(var2.idProvider) : var2.idProvider == null) {
                           if (!Arrays.equals(this.internalKeys, var2.internalKeys)) {
                              class="kw">return false;
                           }

                           if (this.inheritsProperty != null ? this.inheritsProperty.equals(var2.inheritsProperty) : var2.inheritsProperty == null) {
                              if (this.mergesProperties != null ? this.mergesProperties.equals(var2.mergesProperties) : var2.mergesProperties == null) {
                                 if (!Arrays.equals(this.uiEditorFeatures, var2.uiEditorFeatures)) {
                                    class="kw">return false;
                                 }

                                 if (this.uiEditorPreview != var2.uiEditorPreview) {
                                    class="kw">return false;
                                 }

                                 if (this.uiTypeIcon != null ? this.uiTypeIcon.equals(var2.uiTypeIcon) : var2.uiTypeIcon == null) {
                                    if (this.uiEditorIgnore != null ? this.uiEditorIgnore.equals(var2.uiEditorIgnore) : var2.uiEditorIgnore == null) {
                                       if (this.allowEmptyObject != null ? this.allowEmptyObject.equals(var2.allowEmptyObject) : var2.allowEmptyObject == null) {
                                          if (this.uiDisplayMode != var2.uiDisplayMode) {
                                             class="kw">return false;
                                          }

                                          if (this.uiEditorComponent != null
                                             ? this.uiEditorComponent.equals(var2.uiEditorComponent)
                                             : var2.uiEditorComponent == null) {
                                             if (this.uiPropertyTitle != null
                                                ? this.uiPropertyTitle.equals(var2.uiPropertyTitle)
                                                : var2.uiPropertyTitle == null) {
                                                if (this.uiSectionStart != null ? this.uiSectionStart.equals(var2.uiSectionStart) : var2.uiSectionStart == null
                                                   )
                                                 {
                                                   if (!Arrays.equals(this.uiRebuildCaches, var2.uiRebuildCaches)) {
                                                      class="kw">return false;
                                                   }

                                                   if (this.uiRebuildCachesForChildProperties != null
                                                      ? this.uiRebuildCachesForChildProperties.equals(var2.uiRebuildCachesForChildProperties)
                                                      : var2.uiRebuildCachesForChildProperties == null) {
                                                      if (!Arrays.equals(this.uiSidebarButtons, var2.uiSidebarButtons)) {
                                                         class="kw">return false;
                                                      } else {
                                                         class="kw">return (
                                                               this.uiCollapsedByDefault != null
                                                                  ? this.uiCollapsedByDefault.equals(var2.uiCollapsedByDefault)
                                                                  : var2.uiCollapsedByDefault == null
                                                            )
                                                            ? Arrays.equals(this.uiCreateButtons, var2.uiCreateButtons)
                                                            : false;
                                                      }
                                                   } else {
                                                      class="kw">return false;
                                                   }
                                                } else {
                                                   class="kw">return false;
                                                }
                                             } else {
                                                class="kw">return false;
                                             }
                                          } else {
                                             class="kw">return false;
                                          }
                                       } else {
                                          class="kw">return false;
                                       }
                                    } else {
                                       class="kw">return false;
                                    }
                                 } else {
                                    class="kw">return false;
                                 }
                              } else {
                                 class="kw">return false;
                              }
                           } else {
                              class="kw">return false;
                           }
                        } else {
                           class="kw">return false;
                        }
                     } else {
                        class="kw">return false;
                     }
                  } else {
                     class="kw">return false;
                  }
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.type != null ? this.type.hashCode() : 0;
         var1 = 31 * var1 + (this.path != null ? this.path.hashCode() : 0);
         var1 = 31 * var1 + (this.virtualPath != null ? this.virtualPath.hashCode() : 0);
         var1 = 31 * var1 + (this.extension != null ? this.extension.hashCode() : 0);
         var1 = 31 * var1 + (this.idProvider != null ? this.idProvider.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.internalKeys);
         var1 = 31 * var1 + (this.inheritsProperty != null ? this.inheritsProperty.hashCode() : 0);
         var1 = 31 * var1 + (this.mergesProperties != null ? this.mergesProperties.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.uiEditorFeatures);
         var1 = 31 * var1 + (this.uiEditorPreview != null ? this.uiEditorPreview.hashCode() : 0);
         var1 = 31 * var1 + (this.uiTypeIcon != null ? this.uiTypeIcon.hashCode() : 0);
         var1 = 31 * var1 + (this.uiEditorIgnore != null ? this.uiEditorIgnore.hashCode() : 0);
         var1 = 31 * var1 + (this.allowEmptyObject != null ? this.allowEmptyObject.hashCode() : 0);
         var1 = 31 * var1 + (this.uiDisplayMode != null ? this.uiDisplayMode.hashCode() : 0);
         var1 = 31 * var1 + (this.uiEditorComponent != null ? this.uiEditorComponent.hashCode() : 0);
         var1 = 31 * var1 + (this.uiPropertyTitle != null ? this.uiPropertyTitle.hashCode() : 0);
         var1 = 31 * var1 + (this.uiSectionStart != null ? this.uiSectionStart.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.uiRebuildCaches);
         var1 = 31 * var1 + (this.uiRebuildCachesForChildProperties != null ? this.uiRebuildCachesForChildProperties.hashCode() : 0);
         var1 = 31 * var1 + Arrays.hashCode(this.uiSidebarButtons);
         var1 = 31 * var1 + (this.uiCollapsedByDefault != null ? this.uiCollapsedByDefault.hashCode() : 0);
         class="kw">return 31 * var1 + Arrays.hashCode(this.uiCreateButtons);
      }
   }

   class="kw">public class="kw">static class InheritSettings {
      class="kw">public class="kw">static class="kw">final BuilderCodec<Schema.InheritSettings> CODEC = BuilderCodec.builder(Schema.InheritSettings.class, Schema.InheritSettings::new)
         .append(new KeyedCodec<>("type", Codec.STRING, false, true), (var0, var1) -> var0.type = var1, var0 -> var0.type)
         .add()
         .append(new KeyedCodec<>("mapKey", Codec.STRING, false, true), (var0, var1) -> var0.mapKey = var1, var0 -> var0.mapKey)
         .add()
         .append(new KeyedCodec<>("mapKeyValue", Codec.STRING, false, true), (var0, var1) -> var0.mapKeyValue = var1, var0 -> var0.mapKeyValue)
         .add()
         .build();
      class="kw">private String type;
      class="kw">private String mapKey;
      class="kw">private String mapKeyValue;

      class="kw">public InheritSettings(String var1) {
         this.type = var1;
      }

      class="kw">protected InheritSettings() {
      }

      class="kw">public String getType() {
         class="kw">return this.type;
      }

      class="kw">public void setType(String var1) {
         this.type = var1;
      }

      class="kw">public String getMapKey() {
         class="kw">return this.mapKey;
      }

      class="kw">public void setMapKey(String var1) {
         this.mapKey = var1;
      }

      class="kw">public String getMapKeyValue() {
         class="kw">return this.mapKeyValue;
      }

      class="kw">public void setMapKeyValue(String var1) {
         this.mapKeyValue = var1;
      }

      @Override
      class="kw">public boolean equals(@Nullable Object var1) {
         if (this == var1) {
            class="kw">return true;
         }

         if (var1 != null && this.getClass() == var1.getClass()) {
            Schema.InheritSettings var2 = (Schema.InheritSettings)var1;
            if (this.type != null ? this.type.equals(var2.type) : var2.type == null) {
               if (this.mapKey != null ? this.mapKey.equals(var2.mapKey) : var2.mapKey == null) {
                  class="kw">return this.mapKeyValue != null ? this.mapKeyValue.equals(var2.mapKeyValue) : var2.mapKeyValue == null;
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = this.type != null ? this.type.hashCode() : 0;
         var1 = 31 * var1 + (this.mapKey != null ? this.mapKey.hashCode() : 0);
         class="kw">return 31 * var1 + (this.mapKeyValue != null ? this.mapKeyValue.hashCode() : 0);
      }
   }

   class="kw">public class="kw">static class SchemaTypeField {
      class="kw">public class="kw">static class="kw">final BuilderCodec<Schema.SchemaTypeField> CODEC = BuilderCodec.builder(Schema.SchemaTypeField.class, Schema.SchemaTypeField::new)
         .append(new KeyedCodec<>("property", Codec.STRING, false, true), (var0, var1) -> var0.property = var1, var0 -> var0.property)
         .add()
         .append(new KeyedCodec<>("defaultValue", Codec.STRING, false, true), (var0, var1) -> var0.defaultValue = var1, var0 -> var0.defaultValue)
         .add()
         .append(new KeyedCodec<>("values", Codec.STRING_ARRAY, false, true), (var0, var1) -> var0.values = var1, var0 -> var0.values)
         .add()
         .append(
            new KeyedCodec<>("parentPropertyKey", Codec.STRING, false, true), (var0, var1) -> var0.parentPropertyKey = var1, var0 -> var0.parentPropertyKey
         )
         .add()
         .build();
      class="kw">private String property;
      class="kw">private String defaultValue;
      class="kw">private String[] values;
      class="kw">private String parentPropertyKey;

      class="kw">public SchemaTypeField(String var1, String var2, String... var3) {
         this.property = var1;
         this.defaultValue = var2;
         this.values = var3;
      }

      class="kw">protected SchemaTypeField() {
      }

      class="kw">public String getProperty() {
         class="kw">return this.property;
      }

      class="kw">public String getDefaultValue() {
         class="kw">return this.defaultValue;
      }

      class="kw">public String[] getValues() {
         class="kw">return this.values;
      }

      class="kw">public String getParentPropertyKey() {
         class="kw">return this.parentPropertyKey;
      }

      class="kw">public void setParentPropertyKey(String var1) {
         this.parentPropertyKey = var1;
      }

      @Override
      class="kw">public boolean equals(Object var1) {
         if (var1 != null && this.getClass() == var1.getClass()) {
            Schema.SchemaTypeField var2 = (Schema.SchemaTypeField)var1;
            class="kw">return Objects.equals(this.property, var2.property)
               && Objects.equals(this.defaultValue, var2.defaultValue)
               && Arrays.deepEquals(this.values, var2.values)
               && Objects.equals(this.parentPropertyKey, var2.parentPropertyKey);
         } else {
            class="kw">return false;
         }
      }

      @Override
      class="kw">public int hashCode() {
         int var1 = Objects.hashCode(this.property);
         var1 = 31 * var1 + Objects.hashCode(this.defaultValue);
         var1 = 31 * var1 + Arrays.hashCode(this.values);
         class="kw">return 31 * var1 + Objects.hashCode(this.parentPropertyKey);
      }
   }

   @Deprecated
   class="kw">private class="kw">static class StringOrBlank class="kw">implements Codec<String> {
      class="kw">private StringOrBlank() {
      }

      class="kw">public String decode(@Nonnull BsonValue var1, ExtraInfo var2) {
         if (var1.isString()) {
            class="kw">return Codec.STRING.decode(var1, var2);
         }

         if (var1.isArray()) {
            BsonArray var3 = var1.asArray();

            for (int var4 = 0; var4 < var3.size(); var4++) {
               BsonValue var5 = var3.get(var4);
               if (!var5.asString().getValue().equals("null")) {
                  class="kw">return Codec.STRING.decode(var5, var2);
               }
            }

            throw new IllegalArgumentException("Unknown type (in array)");
         } else {
            class="kw">return "";
         }
      }

      @Nonnull
      class="kw">public BsonValue encode(@Nonnull String var1, ExtraInfo var2) {
         class="kw">return Codec.STRING.encode(var1, var2);
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return Schema.anyOf(new ArraySchema(), new StringSchema());
      }
   }
}