package net.minecraft.commands.arguments.selector.options;

import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.util.Mth;
import net.minecraft.advancements.critereon.WrappedMinMaxBounds;
import java.util.List;
import net.minecraft.world.phys.Vec3;
import java.util.function.BiConsumer;
import java.util.Arrays;
import net.minecraft.world.level.GameType;
import net.minecraft.world.scores.Team;
import net.minecraft.world.entity.LivingEntity;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
import java.util.Objects;
import net.minecraft.world.entity.EntityType;
import net.minecraft.tags.EntityTypeTags;
import net.minecraft.commands.SharedSuggestionProvider;
import net.minecraft.core.Registry;
import net.minecraft.world.item.ItemStack;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.nbt.Tag;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.TagParser;
import net.minecraft.world.scores.Score;
import net.minecraft.world.scores.Objective;
import net.minecraft.world.scores.Scoreboard;
import net.minecraft.advancements.critereon.MinMaxBounds;
import net.minecraft.advancements.Advancement;
import net.minecraft.server.ServerAdvancementManager;
import net.minecraft.server.PlayerAdvancements;
import com.mojang.brigadier.StringReader;
import net.minecraft.advancements.AdvancementProgress;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.advancements.CriterionProgress;
import com.google.common.collect.Maps;
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.resources.ResourceLocation;
import java.util.Iterator;
import com.mojang.brigadier.Message;
import java.util.Locale;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.ImmutableStringReader;
import net.minecraft.network.chat.Component;
import net.minecraft.commands.arguments.selector.EntitySelectorParser;
import java.util.function.Predicate;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
import java.util.Map;

public class EntitySelectorOptions {
    private static final Map<String, Option> OPTIONS;
    public static final DynamicCommandExceptionType ERROR_UNKNOWN_OPTION;
    public static final DynamicCommandExceptionType ERROR_INAPPLICABLE_OPTION;
    public static final SimpleCommandExceptionType ERROR_RANGE_NEGATIVE;
    public static final SimpleCommandExceptionType ERROR_LEVEL_NEGATIVE;
    public static final SimpleCommandExceptionType ERROR_LIMIT_TOO_SMALL;
    public static final DynamicCommandExceptionType ERROR_SORT_UNKNOWN;
    public static final DynamicCommandExceptionType ERROR_GAME_MODE_INVALID;
    public static final DynamicCommandExceptionType ERROR_ENTITY_TYPE_INVALID;
    
    private static void register(final String string, final Modifier a, final Predicate<EntitySelectorParser> predicate, final Component lf) {
        EntitySelectorOptions.OPTIONS.put(string, new Option(a, (Predicate)predicate, lf));
    }
    
    public static void bootStrap() {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     3: invokeinterface java/util/Map.isEmpty:()Z
        //     8: ifne            12
        //    11: return         
        //    12: ldc             "name"
        //    14: invokedynamic   BootstrapMethod #0, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //    19: invokedynamic   BootstrapMethod #1, test:()Ljava/util/function/Predicate;
        //    24: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //    27: dup            
        //    28: ldc             "argument.entity.options.name.description"
        //    30: iconst_0       
        //    31: anewarray       Ljava/lang/Object;
        //    34: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //    37: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //    40: ldc             "distance"
        //    42: invokedynamic   BootstrapMethod #2, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //    47: invokedynamic   BootstrapMethod #3, test:()Ljava/util/function/Predicate;
        //    52: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //    55: dup            
        //    56: ldc             "argument.entity.options.distance.description"
        //    58: iconst_0       
        //    59: anewarray       Ljava/lang/Object;
        //    62: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //    65: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //    68: ldc             "level"
        //    70: invokedynamic   BootstrapMethod #4, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //    75: invokedynamic   BootstrapMethod #5, test:()Ljava/util/function/Predicate;
        //    80: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //    83: dup            
        //    84: ldc             "argument.entity.options.level.description"
        //    86: iconst_0       
        //    87: anewarray       Ljava/lang/Object;
        //    90: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //    93: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //    96: ldc             "x"
        //    98: invokedynamic   BootstrapMethod #6, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   103: invokedynamic   BootstrapMethod #7, test:()Ljava/util/function/Predicate;
        //   108: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   111: dup            
        //   112: ldc             "argument.entity.options.x.description"
        //   114: iconst_0       
        //   115: anewarray       Ljava/lang/Object;
        //   118: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   121: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   124: ldc             "y"
        //   126: invokedynamic   BootstrapMethod #8, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   131: invokedynamic   BootstrapMethod #9, test:()Ljava/util/function/Predicate;
        //   136: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   139: dup            
        //   140: ldc             "argument.entity.options.y.description"
        //   142: iconst_0       
        //   143: anewarray       Ljava/lang/Object;
        //   146: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   149: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   152: ldc             "z"
        //   154: invokedynamic   BootstrapMethod #10, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   159: invokedynamic   BootstrapMethod #11, test:()Ljava/util/function/Predicate;
        //   164: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   167: dup            
        //   168: ldc             "argument.entity.options.z.description"
        //   170: iconst_0       
        //   171: anewarray       Ljava/lang/Object;
        //   174: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   177: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   180: ldc             "dx"
        //   182: invokedynamic   BootstrapMethod #12, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   187: invokedynamic   BootstrapMethod #13, test:()Ljava/util/function/Predicate;
        //   192: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   195: dup            
        //   196: ldc             "argument.entity.options.dx.description"
        //   198: iconst_0       
        //   199: anewarray       Ljava/lang/Object;
        //   202: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   205: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   208: ldc             "dy"
        //   210: invokedynamic   BootstrapMethod #14, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   215: invokedynamic   BootstrapMethod #15, test:()Ljava/util/function/Predicate;
        //   220: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   223: dup            
        //   224: ldc             "argument.entity.options.dy.description"
        //   226: iconst_0       
        //   227: anewarray       Ljava/lang/Object;
        //   230: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   233: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   236: ldc             "dz"
        //   238: invokedynamic   BootstrapMethod #16, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   243: invokedynamic   BootstrapMethod #17, test:()Ljava/util/function/Predicate;
        //   248: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   251: dup            
        //   252: ldc             "argument.entity.options.dz.description"
        //   254: iconst_0       
        //   255: anewarray       Ljava/lang/Object;
        //   258: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   261: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   264: ldc             "x_rotation"
        //   266: invokedynamic   BootstrapMethod #18, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   271: invokedynamic   BootstrapMethod #19, test:()Ljava/util/function/Predicate;
        //   276: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   279: dup            
        //   280: ldc             "argument.entity.options.x_rotation.description"
        //   282: iconst_0       
        //   283: anewarray       Ljava/lang/Object;
        //   286: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   289: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   292: ldc             "y_rotation"
        //   294: invokedynamic   BootstrapMethod #20, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   299: invokedynamic   BootstrapMethod #21, test:()Ljava/util/function/Predicate;
        //   304: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   307: dup            
        //   308: ldc_w           "argument.entity.options.y_rotation.description"
        //   311: iconst_0       
        //   312: anewarray       Ljava/lang/Object;
        //   315: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   318: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   321: ldc_w           "limit"
        //   324: invokedynamic   BootstrapMethod #22, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   329: invokedynamic   BootstrapMethod #23, test:()Ljava/util/function/Predicate;
        //   334: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   337: dup            
        //   338: ldc_w           "argument.entity.options.limit.description"
        //   341: iconst_0       
        //   342: anewarray       Ljava/lang/Object;
        //   345: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   348: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   351: ldc_w           "sort"
        //   354: invokedynamic   BootstrapMethod #24, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   359: invokedynamic   BootstrapMethod #25, test:()Ljava/util/function/Predicate;
        //   364: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   367: dup            
        //   368: ldc_w           "argument.entity.options.sort.description"
        //   371: iconst_0       
        //   372: anewarray       Ljava/lang/Object;
        //   375: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   378: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   381: ldc_w           "gamemode"
        //   384: invokedynamic   BootstrapMethod #26, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   389: invokedynamic   BootstrapMethod #27, test:()Ljava/util/function/Predicate;
        //   394: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   397: dup            
        //   398: ldc_w           "argument.entity.options.gamemode.description"
        //   401: iconst_0       
        //   402: anewarray       Ljava/lang/Object;
        //   405: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   408: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   411: ldc_w           "team"
        //   414: invokedynamic   BootstrapMethod #28, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   419: invokedynamic   BootstrapMethod #29, test:()Ljava/util/function/Predicate;
        //   424: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   427: dup            
        //   428: ldc_w           "argument.entity.options.team.description"
        //   431: iconst_0       
        //   432: anewarray       Ljava/lang/Object;
        //   435: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   438: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   441: ldc_w           "type"
        //   444: invokedynamic   BootstrapMethod #30, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   449: invokedynamic   BootstrapMethod #31, test:()Ljava/util/function/Predicate;
        //   454: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   457: dup            
        //   458: ldc_w           "argument.entity.options.type.description"
        //   461: iconst_0       
        //   462: anewarray       Ljava/lang/Object;
        //   465: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   468: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   471: ldc_w           "tag"
        //   474: invokedynamic   BootstrapMethod #32, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   479: invokedynamic   BootstrapMethod #33, test:()Ljava/util/function/Predicate;
        //   484: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   487: dup            
        //   488: ldc_w           "argument.entity.options.tag.description"
        //   491: iconst_0       
        //   492: anewarray       Ljava/lang/Object;
        //   495: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   498: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   501: ldc_w           "nbt"
        //   504: invokedynamic   BootstrapMethod #34, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   509: invokedynamic   BootstrapMethod #35, test:()Ljava/util/function/Predicate;
        //   514: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   517: dup            
        //   518: ldc_w           "argument.entity.options.nbt.description"
        //   521: iconst_0       
        //   522: anewarray       Ljava/lang/Object;
        //   525: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   528: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   531: ldc_w           "scores"
        //   534: invokedynamic   BootstrapMethod #36, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   539: invokedynamic   BootstrapMethod #37, test:()Ljava/util/function/Predicate;
        //   544: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   547: dup            
        //   548: ldc_w           "argument.entity.options.scores.description"
        //   551: iconst_0       
        //   552: anewarray       Ljava/lang/Object;
        //   555: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   558: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   561: ldc_w           "advancements"
        //   564: invokedynamic   BootstrapMethod #38, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   569: invokedynamic   BootstrapMethod #39, test:()Ljava/util/function/Predicate;
        //   574: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   577: dup            
        //   578: ldc_w           "argument.entity.options.advancements.description"
        //   581: iconst_0       
        //   582: anewarray       Ljava/lang/Object;
        //   585: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   588: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   591: ldc_w           "predicate"
        //   594: invokedynamic   BootstrapMethod #40, handle:()Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;
        //   599: invokedynamic   BootstrapMethod #41, test:()Ljava/util/function/Predicate;
        //   604: new             Lnet/minecraft/network/chat/TranslatableComponent;
        //   607: dup            
        //   608: ldc_w           "argument.entity.options.predicate.description"
        //   611: iconst_0       
        //   612: anewarray       Ljava/lang/Object;
        //   615: invokespecial   net/minecraft/network/chat/TranslatableComponent.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
        //   618: invokestatic    net/minecraft/commands/arguments/selector/options/EntitySelectorOptions.register:(Ljava/lang/String;Lnet/minecraft/commands/arguments/selector/options/EntitySelectorOptions$Modifier;Ljava/util/function/Predicate;Lnet/minecraft/network/chat/Component;)V
        //   621: return         
        //    StackMapTable: 00 01 0C
        // 
        // The error that occurred was:
        // 
        // java.lang.NullPointerException
        //     at com.strobel.decompiler.languages.java.ast.NameVariables.generateNameForVariable(NameVariables.java:264)
        //     at com.strobel.decompiler.languages.java.ast.NameVariables.assignNamesToVariables(NameVariables.java:198)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:276)
        //     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.helpCC(ForkJoinPool.java:1115)
        //     at java.base/java.util.concurrent.ForkJoinPool.externalHelpComplete(ForkJoinPool.java:1957)
        //     at java.base/java.util.concurrent.ForkJoinTask.tryExternalHelp(ForkJoinTask.java:378)
        //     at java.base/java.util.concurrent.ForkJoinTask.externalAwaitDone(ForkJoinTask.java:323)
        //     at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:412)
        //     at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:736)
        //     at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
        //     at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
        //     at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
        //     at cuchaz.enigma.EnigmaProject$JarExport.decompile(EnigmaProject.java:233)
        //     at cuchaz.enigma.command.DecompileCommand.run(DecompileCommand.java:35)
        //     at cuchaz.enigma.CommandMain.main(CommandMain.java:43)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
    
    public static Modifier get(final EntitySelectorParser eq, final String string, final int integer) throws CommandSyntaxException {
        final Option b4 = EntitySelectorOptions.OPTIONS.get(string);
        if (b4 == null) {
            eq.getReader().setCursor(integer);
            throw EntitySelectorOptions.ERROR_UNKNOWN_OPTION.createWithContext((ImmutableStringReader)eq.getReader(), string);
        }
        if (b4.predicate.test(eq)) {
            return b4.modifier;
        }
        throw EntitySelectorOptions.ERROR_INAPPLICABLE_OPTION.createWithContext((ImmutableStringReader)eq.getReader(), string);
    }
    
    public static void suggestNames(final EntitySelectorParser eq, final SuggestionsBuilder suggestionsBuilder) {
        final String string3 = suggestionsBuilder.getRemaining().toLowerCase(Locale.ROOT);
        for (final Map.Entry<String, Option> entry5 : EntitySelectorOptions.OPTIONS.entrySet()) {
            if (entry5.getValue().predicate.test(eq) && entry5.getKey().toLowerCase(Locale.ROOT).startsWith(string3)) {
                suggestionsBuilder.suggest(entry5.getKey() + '=', (Message)entry5.getValue().description);
            }
        }
    }
    
    static {
        OPTIONS = Maps.newHashMap();
        final TranslatableComponent translatableComponent;
        ERROR_UNKNOWN_OPTION = new DynamicCommandExceptionType(object -> {
            new TranslatableComponent("argument.entity.options.unknown", new Object[] { object });
            return translatableComponent;
        });
        final TranslatableComponent translatableComponent2;
        ERROR_INAPPLICABLE_OPTION = new DynamicCommandExceptionType(object -> {
            new TranslatableComponent("argument.entity.options.inapplicable", new Object[] { object });
            return translatableComponent2;
        });
        ERROR_RANGE_NEGATIVE = new SimpleCommandExceptionType((Message)new TranslatableComponent("argument.entity.options.distance.negative", new Object[0]));
        ERROR_LEVEL_NEGATIVE = new SimpleCommandExceptionType((Message)new TranslatableComponent("argument.entity.options.level.negative", new Object[0]));
        ERROR_LIMIT_TOO_SMALL = new SimpleCommandExceptionType((Message)new TranslatableComponent("argument.entity.options.limit.toosmall", new Object[0]));
        final TranslatableComponent translatableComponent3;
        ERROR_SORT_UNKNOWN = new DynamicCommandExceptionType(object -> {
            new TranslatableComponent("argument.entity.options.sort.irreversible", new Object[] { object });
            return translatableComponent3;
        });
        final TranslatableComponent translatableComponent4;
        ERROR_GAME_MODE_INVALID = new DynamicCommandExceptionType(object -> {
            new TranslatableComponent("argument.entity.options.mode.invalid", new Object[] { object });
            return translatableComponent4;
        });
        final TranslatableComponent translatableComponent5;
        ERROR_ENTITY_TYPE_INVALID = new DynamicCommandExceptionType(object -> {
            new TranslatableComponent("argument.entity.options.type.invalid", new Object[] { object });
            return translatableComponent5;
        });
    }
    
    static class Option {
        public final Modifier modifier;
        public final Predicate<EntitySelectorParser> predicate;
        public final Component description;
        
        private Option(final Modifier a, final Predicate<EntitySelectorParser> predicate, final Component lf) {
            this.modifier = a;
            this.predicate = predicate;
            this.description = lf;
        }
    }
    
    public interface Modifier {
        void handle(final EntitySelectorParser eq) throws CommandSyntaxException;
    }
}
