package net.minecraft.core;

import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.alchemy.Potions;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.world.level.levelgen.structure.StructureFeatureIO;
import net.minecraft.stats.Stats;
import org.apache.commons.lang3.Validate;
import net.minecraft.SharedConstants;
import java.util.stream.StreamSupport;
import java.util.stream.Stream;
import java.util.Random;
import java.util.Set;
import java.util.Optional;
import javax.annotation.Nullable;
import net.minecraft.world.entity.schedule.Activity;
import net.minecraft.world.entity.schedule.Schedule;
import net.minecraft.world.entity.ai.sensing.SensorType;
import net.minecraft.world.entity.ai.memory.MemoryModuleType;
import net.minecraft.world.entity.ai.village.poi.PoiType;
import net.minecraft.world.entity.npc.VillagerProfession;
import net.minecraft.world.entity.npc.VillagerType;
import net.minecraft.stats.StatType;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.level.levelgen.feature.structures.StructurePoolElementType;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType;
import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTestType;
import net.minecraft.world.level.levelgen.feature.StructurePieceType;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.chunk.ChunkStatus;
import net.minecraft.world.entity.decoration.Motive;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.chunk.ChunkGeneratorType;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.biome.BiomeSourceType;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleType;
import net.minecraft.world.level.levelgen.feature.treedecorators.TreeDecoratorType;
import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType;
import net.minecraft.world.level.levelgen.feature.blockplacers.BlockPlacerType;
import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProviderType;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.placement.FeatureDecorator;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.level.levelgen.carver.WorldCarver;
import net.minecraft.world.item.alchemy.Potion;
import net.minecraft.world.item.Item;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.sounds.SoundEvent;
import java.util.function.Supplier;
import net.minecraft.resources.ResourceLocation;
import java.util.Map;
import org.apache.logging.log4j.Logger;

public abstract class Registry<T> implements IdMap<T> {
    protected static final Logger LOGGER;
    private static final Map<ResourceLocation, Supplier<?>> LOADERS;
    public static final WritableRegistry<WritableRegistry<?>> REGISTRY;
    public static final Registry<SoundEvent> SOUND_EVENT;
    public static final DefaultedRegistry<Fluid> FLUID;
    public static final Registry<MobEffect> MOB_EFFECT;
    public static final DefaultedRegistry<Block> BLOCK;
    public static final Registry<Enchantment> ENCHANTMENT;
    public static final DefaultedRegistry<EntityType<?>> ENTITY_TYPE;
    public static final DefaultedRegistry<Item> ITEM;
    public static final DefaultedRegistry<Potion> POTION;
    public static final Registry<WorldCarver<?>> CARVER;
    public static final Registry<SurfaceBuilder<?>> SURFACE_BUILDER;
    public static final Registry<Feature<?>> FEATURE;
    public static final Registry<FeatureDecorator<?>> DECORATOR;
    public static final Registry<Biome> BIOME;
    public static final Registry<BlockStateProviderType<?>> BLOCKSTATE_PROVIDER_TYPES;
    public static final Registry<BlockPlacerType<?>> BLOCK_PLACER_TYPES;
    public static final Registry<FoliagePlacerType<?>> FOLIAGE_PLACER_TYPES;
    public static final Registry<TreeDecoratorType<?>> TREE_DECORATOR_TYPES;
    public static final Registry<ParticleType<? extends ParticleOptions>> PARTICLE_TYPE;
    public static final Registry<BiomeSourceType<?, ?>> BIOME_SOURCE_TYPE;
    public static final Registry<BlockEntityType<?>> BLOCK_ENTITY_TYPE;
    public static final Registry<ChunkGeneratorType<?, ?>> CHUNK_GENERATOR_TYPE;
    public static final Registry<DimensionType> DIMENSION_TYPE;
    public static final DefaultedRegistry<Motive> MOTIVE;
    public static final Registry<ResourceLocation> CUSTOM_STAT;
    public static final DefaultedRegistry<ChunkStatus> CHUNK_STATUS;
    public static final Registry<StructureFeature<?>> STRUCTURE_FEATURE;
    public static final Registry<StructurePieceType> STRUCTURE_PIECE;
    public static final Registry<RuleTestType> RULE_TEST;
    public static final Registry<StructureProcessorType> STRUCTURE_PROCESSOR;
    public static final Registry<StructurePoolElementType> STRUCTURE_POOL_ELEMENT;
    public static final Registry<MenuType<?>> MENU;
    public static final Registry<RecipeType<?>> RECIPE_TYPE;
    public static final Registry<RecipeSerializer<?>> RECIPE_SERIALIZER;
    public static final Registry<StatType<?>> STAT_TYPE;
    public static final DefaultedRegistry<VillagerType> VILLAGER_TYPE;
    public static final DefaultedRegistry<VillagerProfession> VILLAGER_PROFESSION;
    public static final DefaultedRegistry<PoiType> POINT_OF_INTEREST_TYPE;
    public static final DefaultedRegistry<MemoryModuleType<?>> MEMORY_MODULE_TYPE;
    public static final DefaultedRegistry<SensorType<?>> SENSOR_TYPE;
    public static final Registry<Schedule> SCHEDULE;
    public static final Registry<Activity> ACTIVITY;
    
    private static <T> Registry<T> registerSimple(final String string, final Supplier<T> supplier) {
        return Registry.<T, MappedRegistry<T>>internalRegister(string, new MappedRegistry<T>(), supplier);
    }
    
    private static <T> DefaultedRegistry<T> registerDefaulted(final String string1, final String string2, final Supplier<T> supplier) {
        return Registry.<T, DefaultedRegistry<T>>internalRegister(string1, new DefaultedRegistry<T>(string2), supplier);
    }
    
    private static <T, R extends WritableRegistry<T>> R internalRegister(final String string, final R gh, final Supplier<T> supplier) {
        final ResourceLocation sm4 = new ResourceLocation(string);
        Registry.LOADERS.put(sm4, supplier);
        return Registry.REGISTRY.<R>register(sm4, gh);
    }
    
    @Nullable
    public abstract ResourceLocation getKey(final T object);
    
    public abstract int getId(@Nullable final T object);
    
    @Nullable
    public abstract T get(@Nullable final ResourceLocation sm);
    
    public abstract Optional<T> getOptional(@Nullable final ResourceLocation sm);
    
    public abstract Set<ResourceLocation> keySet();
    
    @Nullable
    public abstract T getRandom(final Random random);
    
    public Stream<T> stream() {
        return StreamSupport.<T>stream(this.spliterator(), false);
    }
    
    public abstract boolean containsKey(final ResourceLocation sm);
    
    public static <T> T register(final Registry<? super T> gb, final String string, final T object) {
        return Registry.<T>register(gb, new ResourceLocation(string), object);
    }
    
    public static <T> T register(final Registry<? super T> gb, final ResourceLocation sm, final T object) {
        return ((WritableRegistry)gb).<T>register(sm, object);
    }
    
    public static <T> T registerMapping(final Registry<? super T> gb, final int integer, final String string, final T object) {
        return ((WritableRegistry)gb).<T>registerMapping(integer, new ResourceLocation(string), object);
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     3: putstatic       net/minecraft/core/Registry.LOGGER:Lorg/apache/logging/log4j/Logger;
        //     6: invokestatic    com/google/common/collect/Maps.newLinkedHashMap:()Ljava/util/LinkedHashMap;
        //     9: putstatic       net/minecraft/core/Registry.LOADERS:Ljava/util/Map;
        //    12: new             Lnet/minecraft/core/MappedRegistry;
        //    15: dup            
        //    16: invokespecial   net/minecraft/core/MappedRegistry.<init>:()V
        //    19: putstatic       net/minecraft/core/Registry.REGISTRY:Lnet/minecraft/core/WritableRegistry;
        //    22: ldc_w           "sound_event"
        //    25: invokedynamic   BootstrapMethod #0, get:()Ljava/util/function/Supplier;
        //    30: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //    33: putstatic       net/minecraft/core/Registry.SOUND_EVENT:Lnet/minecraft/core/Registry;
        //    36: ldc_w           "fluid"
        //    39: ldc_w           "empty"
        //    42: invokedynamic   BootstrapMethod #1, get:()Ljava/util/function/Supplier;
        //    47: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //    50: putstatic       net/minecraft/core/Registry.FLUID:Lnet/minecraft/core/DefaultedRegistry;
        //    53: ldc_w           "mob_effect"
        //    56: invokedynamic   BootstrapMethod #2, get:()Ljava/util/function/Supplier;
        //    61: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //    64: putstatic       net/minecraft/core/Registry.MOB_EFFECT:Lnet/minecraft/core/Registry;
        //    67: ldc_w           "block"
        //    70: ldc_w           "air"
        //    73: invokedynamic   BootstrapMethod #3, get:()Ljava/util/function/Supplier;
        //    78: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //    81: putstatic       net/minecraft/core/Registry.BLOCK:Lnet/minecraft/core/DefaultedRegistry;
        //    84: ldc_w           "enchantment"
        //    87: invokedynamic   BootstrapMethod #4, get:()Ljava/util/function/Supplier;
        //    92: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //    95: putstatic       net/minecraft/core/Registry.ENCHANTMENT:Lnet/minecraft/core/Registry;
        //    98: ldc_w           "entity_type"
        //   101: ldc_w           "pig"
        //   104: invokedynamic   BootstrapMethod #5, get:()Ljava/util/function/Supplier;
        //   109: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   112: putstatic       net/minecraft/core/Registry.ENTITY_TYPE:Lnet/minecraft/core/DefaultedRegistry;
        //   115: ldc_w           "item"
        //   118: ldc_w           "air"
        //   121: invokedynamic   BootstrapMethod #6, get:()Ljava/util/function/Supplier;
        //   126: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   129: putstatic       net/minecraft/core/Registry.ITEM:Lnet/minecraft/core/DefaultedRegistry;
        //   132: ldc_w           "potion"
        //   135: ldc_w           "empty"
        //   138: invokedynamic   BootstrapMethod #7, get:()Ljava/util/function/Supplier;
        //   143: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   146: putstatic       net/minecraft/core/Registry.POTION:Lnet/minecraft/core/DefaultedRegistry;
        //   149: ldc_w           "carver"
        //   152: invokedynamic   BootstrapMethod #8, get:()Ljava/util/function/Supplier;
        //   157: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   160: putstatic       net/minecraft/core/Registry.CARVER:Lnet/minecraft/core/Registry;
        //   163: ldc_w           "surface_builder"
        //   166: invokedynamic   BootstrapMethod #9, get:()Ljava/util/function/Supplier;
        //   171: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   174: putstatic       net/minecraft/core/Registry.SURFACE_BUILDER:Lnet/minecraft/core/Registry;
        //   177: ldc_w           "feature"
        //   180: invokedynamic   BootstrapMethod #10, get:()Ljava/util/function/Supplier;
        //   185: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   188: putstatic       net/minecraft/core/Registry.FEATURE:Lnet/minecraft/core/Registry;
        //   191: ldc_w           "decorator"
        //   194: invokedynamic   BootstrapMethod #11, get:()Ljava/util/function/Supplier;
        //   199: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   202: putstatic       net/minecraft/core/Registry.DECORATOR:Lnet/minecraft/core/Registry;
        //   205: ldc_w           "biome"
        //   208: invokedynamic   BootstrapMethod #12, get:()Ljava/util/function/Supplier;
        //   213: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   216: putstatic       net/minecraft/core/Registry.BIOME:Lnet/minecraft/core/Registry;
        //   219: ldc_w           "block_state_provider_type"
        //   222: invokedynamic   BootstrapMethod #13, get:()Ljava/util/function/Supplier;
        //   227: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   230: putstatic       net/minecraft/core/Registry.BLOCKSTATE_PROVIDER_TYPES:Lnet/minecraft/core/Registry;
        //   233: ldc_w           "block_placer_type"
        //   236: invokedynamic   BootstrapMethod #14, get:()Ljava/util/function/Supplier;
        //   241: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   244: putstatic       net/minecraft/core/Registry.BLOCK_PLACER_TYPES:Lnet/minecraft/core/Registry;
        //   247: ldc_w           "foliage_placer_type"
        //   250: invokedynamic   BootstrapMethod #15, get:()Ljava/util/function/Supplier;
        //   255: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   258: putstatic       net/minecraft/core/Registry.FOLIAGE_PLACER_TYPES:Lnet/minecraft/core/Registry;
        //   261: ldc_w           "tree_decorator_type"
        //   264: invokedynamic   BootstrapMethod #16, get:()Ljava/util/function/Supplier;
        //   269: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   272: putstatic       net/minecraft/core/Registry.TREE_DECORATOR_TYPES:Lnet/minecraft/core/Registry;
        //   275: ldc_w           "particle_type"
        //   278: invokedynamic   BootstrapMethod #17, get:()Ljava/util/function/Supplier;
        //   283: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   286: putstatic       net/minecraft/core/Registry.PARTICLE_TYPE:Lnet/minecraft/core/Registry;
        //   289: ldc_w           "biome_source_type"
        //   292: invokedynamic   BootstrapMethod #18, get:()Ljava/util/function/Supplier;
        //   297: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   300: putstatic       net/minecraft/core/Registry.BIOME_SOURCE_TYPE:Lnet/minecraft/core/Registry;
        //   303: ldc_w           "block_entity_type"
        //   306: invokedynamic   BootstrapMethod #19, get:()Ljava/util/function/Supplier;
        //   311: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   314: putstatic       net/minecraft/core/Registry.BLOCK_ENTITY_TYPE:Lnet/minecraft/core/Registry;
        //   317: ldc_w           "chunk_generator_type"
        //   320: invokedynamic   BootstrapMethod #20, get:()Ljava/util/function/Supplier;
        //   325: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   328: putstatic       net/minecraft/core/Registry.CHUNK_GENERATOR_TYPE:Lnet/minecraft/core/Registry;
        //   331: ldc_w           "dimension_type"
        //   334: invokedynamic   BootstrapMethod #21, get:()Ljava/util/function/Supplier;
        //   339: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   342: putstatic       net/minecraft/core/Registry.DIMENSION_TYPE:Lnet/minecraft/core/Registry;
        //   345: ldc_w           "motive"
        //   348: ldc_w           "kebab"
        //   351: invokedynamic   BootstrapMethod #22, get:()Ljava/util/function/Supplier;
        //   356: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   359: putstatic       net/minecraft/core/Registry.MOTIVE:Lnet/minecraft/core/DefaultedRegistry;
        //   362: ldc_w           "custom_stat"
        //   365: invokedynamic   BootstrapMethod #23, get:()Ljava/util/function/Supplier;
        //   370: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   373: putstatic       net/minecraft/core/Registry.CUSTOM_STAT:Lnet/minecraft/core/Registry;
        //   376: ldc_w           "chunk_status"
        //   379: ldc_w           "empty"
        //   382: invokedynamic   BootstrapMethod #24, get:()Ljava/util/function/Supplier;
        //   387: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   390: putstatic       net/minecraft/core/Registry.CHUNK_STATUS:Lnet/minecraft/core/DefaultedRegistry;
        //   393: ldc_w           "structure_feature"
        //   396: invokedynamic   BootstrapMethod #25, get:()Ljava/util/function/Supplier;
        //   401: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   404: putstatic       net/minecraft/core/Registry.STRUCTURE_FEATURE:Lnet/minecraft/core/Registry;
        //   407: ldc_w           "structure_piece"
        //   410: invokedynamic   BootstrapMethod #26, get:()Ljava/util/function/Supplier;
        //   415: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   418: putstatic       net/minecraft/core/Registry.STRUCTURE_PIECE:Lnet/minecraft/core/Registry;
        //   421: ldc_w           "rule_test"
        //   424: invokedynamic   BootstrapMethod #27, get:()Ljava/util/function/Supplier;
        //   429: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   432: putstatic       net/minecraft/core/Registry.RULE_TEST:Lnet/minecraft/core/Registry;
        //   435: ldc_w           "structure_processor"
        //   438: invokedynamic   BootstrapMethod #28, get:()Ljava/util/function/Supplier;
        //   443: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   446: putstatic       net/minecraft/core/Registry.STRUCTURE_PROCESSOR:Lnet/minecraft/core/Registry;
        //   449: ldc_w           "structure_pool_element"
        //   452: invokedynamic   BootstrapMethod #29, get:()Ljava/util/function/Supplier;
        //   457: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   460: putstatic       net/minecraft/core/Registry.STRUCTURE_POOL_ELEMENT:Lnet/minecraft/core/Registry;
        //   463: ldc_w           "menu"
        //   466: invokedynamic   BootstrapMethod #30, get:()Ljava/util/function/Supplier;
        //   471: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   474: putstatic       net/minecraft/core/Registry.MENU:Lnet/minecraft/core/Registry;
        //   477: ldc_w           "recipe_type"
        //   480: invokedynamic   BootstrapMethod #31, get:()Ljava/util/function/Supplier;
        //   485: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   488: putstatic       net/minecraft/core/Registry.RECIPE_TYPE:Lnet/minecraft/core/Registry;
        //   491: ldc_w           "recipe_serializer"
        //   494: invokedynamic   BootstrapMethod #32, get:()Ljava/util/function/Supplier;
        //   499: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   502: putstatic       net/minecraft/core/Registry.RECIPE_SERIALIZER:Lnet/minecraft/core/Registry;
        //   505: ldc_w           "stat_type"
        //   508: invokedynamic   BootstrapMethod #33, get:()Ljava/util/function/Supplier;
        //   513: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   516: putstatic       net/minecraft/core/Registry.STAT_TYPE:Lnet/minecraft/core/Registry;
        //   519: ldc_w           "villager_type"
        //   522: ldc_w           "plains"
        //   525: invokedynamic   BootstrapMethod #34, get:()Ljava/util/function/Supplier;
        //   530: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   533: putstatic       net/minecraft/core/Registry.VILLAGER_TYPE:Lnet/minecraft/core/DefaultedRegistry;
        //   536: ldc_w           "villager_profession"
        //   539: ldc_w           "none"
        //   542: invokedynamic   BootstrapMethod #35, get:()Ljava/util/function/Supplier;
        //   547: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   550: putstatic       net/minecraft/core/Registry.VILLAGER_PROFESSION:Lnet/minecraft/core/DefaultedRegistry;
        //   553: ldc_w           "point_of_interest_type"
        //   556: ldc_w           "unemployed"
        //   559: invokedynamic   BootstrapMethod #36, get:()Ljava/util/function/Supplier;
        //   564: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   567: putstatic       net/minecraft/core/Registry.POINT_OF_INTEREST_TYPE:Lnet/minecraft/core/DefaultedRegistry;
        //   570: ldc_w           "memory_module_type"
        //   573: ldc_w           "dummy"
        //   576: invokedynamic   BootstrapMethod #37, get:()Ljava/util/function/Supplier;
        //   581: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   584: putstatic       net/minecraft/core/Registry.MEMORY_MODULE_TYPE:Lnet/minecraft/core/DefaultedRegistry;
        //   587: ldc_w           "sensor_type"
        //   590: ldc_w           "dummy"
        //   593: invokedynamic   BootstrapMethod #38, get:()Ljava/util/function/Supplier;
        //   598: invokestatic    net/minecraft/core/Registry.registerDefaulted:(Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/DefaultedRegistry;
        //   601: putstatic       net/minecraft/core/Registry.SENSOR_TYPE:Lnet/minecraft/core/DefaultedRegistry;
        //   604: ldc_w           "schedule"
        //   607: invokedynamic   BootstrapMethod #39, get:()Ljava/util/function/Supplier;
        //   612: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   615: putstatic       net/minecraft/core/Registry.SCHEDULE:Lnet/minecraft/core/Registry;
        //   618: ldc_w           "activity"
        //   621: invokedynamic   BootstrapMethod #40, get:()Ljava/util/function/Supplier;
        //   626: invokestatic    net/minecraft/core/Registry.registerSimple:(Ljava/lang/String;Ljava/util/function/Supplier;)Lnet/minecraft/core/Registry;
        //   629: putstatic       net/minecraft/core/Registry.ACTIVITY:Lnet/minecraft/core/Registry;
        //   632: getstatic       net/minecraft/core/Registry.LOADERS:Ljava/util/Map;
        //   635: invokeinterface java/util/Map.entrySet:()Ljava/util/Set;
        //   640: invokedynamic   BootstrapMethod #41, accept:()Ljava/util/function/Consumer;
        //   645: invokeinterface java/util/Set.forEach:(Ljava/util/function/Consumer;)V
        //   650: getstatic       net/minecraft/core/Registry.REGISTRY:Lnet/minecraft/core/WritableRegistry;
        //   653: invokedynamic   BootstrapMethod #42, accept:()Ljava/util/function/Consumer;
        //   658: invokevirtual   net/minecraft/core/WritableRegistry.forEach:(Ljava/util/function/Consumer;)V
        //   661: return         
        // 
        // The error that occurred was:
        // 
        // java.lang.IllegalStateException: Could not infer any expression.
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:374)
        //     at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:96)
        //     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:214)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:782)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:675)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:552)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:519)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:161)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:150)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:125)
        //     at cuchaz.enigma.SourceProvider.getSources(SourceProvider.java:85)
        //     at cuchaz.enigma.EnigmaProject$JarExport.decompileClass(EnigmaProject.java:241)
        //     at cuchaz.enigma.EnigmaProject$JarExport.lambda$decompile$1(EnigmaProject.java:230)
        //     at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        //     at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
        //     at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        //     at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        //     at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
        //     at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
        //     at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
        //     at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
        //     at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        //     at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        //     at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        //     at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        //     at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
}
