package com.l7tech.policy.variable;

import com.l7tech.objectmodel.encass.EncapsulatedAssertionConfig;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionTranslator;
import com.l7tech.policy.assertion.CurrentAssertionTranslator;
import com.l7tech.policy.assertion.CurrentInterfaceDescription;
import com.l7tech.policy.assertion.Include;
import com.l7tech.policy.assertion.NewPreorderIterator;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.SetsVariables;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.policy.assertion.composite.CompositeAssertion;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Functions.UnaryVoid;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public final class PolicyVariableUtils {
   private static final Logger a;
   private static final String[] b;

   public static Map<String, VariableMetadata> getVariablesSetByDescendantsAndSelf(Assertion var0) {
      return getVariablesSetByDescendantsAndSelf(var0, CurrentAssertionTranslator.get());
   }

   public static Map<String, VariableMetadata> getVariablesSetByDescendantsAndSelf(Assertion var0, AssertionTranslator var1) {
      TreeMap var2 = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
      a(var0, var1, new b(var2));
      return var2;
   }

   public static String[] getVariablesUsedByDescendantsAndSelf(Assertion var0) {
      return getVariablesUsedByDescendantsAndSelf(var0, CurrentAssertionTranslator.get());
   }

   public static String[] getVariablesUsedByDescendantsAndSelf(Assertion var0, AssertionTranslator var1) {
      TreeSet var2 = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
      a(var0, var1, new c(var2));
      return var2.toArray(new String[var2.size()]);
   }

   private static void a(Assertion param0, AssertionTranslator param1, UnaryVoid<Assertion> param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: ifnull 12
      // 04: aload 0
      // 05: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 08: ifne 17
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: return
      // 13: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16: athrow
      // 17: aload 2
      // 18: aload 0
      // 19: invokeinterface com/l7tech/util/Functions$UnaryVoid.call (Ljava/lang/Object;)V 2
      // 1e: aload 0
      // 1f: instanceof com/l7tech/policy/assertion/composite/CompositeAssertion
      // 22: ifeq 55
      // 25: aload 0
      // 26: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 29: astore 3
      // 2a: aload 3
      // 2b: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getChildren ()Ljava/util/List;
      // 2e: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 33: astore 4
      // 35: aload 4
      // 37: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 3c: ifeq 55
      // 3f: aload 4
      // 41: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 46: checkcast com/l7tech/policy/assertion/Assertion
      // 49: astore 5
      // 4b: aload 5
      // 4d: aload 1
      // 4e: aload 2
      // 4f: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Lcom/l7tech/policy/assertion/Assertion;Lcom/l7tech/policy/assertion/AssertionTranslator;Lcom/l7tech/util/Functions$UnaryVoid;)V
      // 52: goto 35
      // 55: aload 1
      // 56: ifnull cf
      // 59: aload 0
      // 5a: instanceof com/l7tech/policy/assertion/Include
      // 5d: ifeq cf
      // 60: goto 67
      // 63: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 66: athrow
      // 67: aload 1
      // 68: aload 0
      // 69: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translate (Lcom/l7tech/policy/assertion/Assertion;)Lcom/l7tech/policy/assertion/Assertion; 2
      // 6e: astore 3
      // 6f: aload 3
      // 70: aload 0
      // 71: if_acmpeq 81
      // 74: aload 3
      // 75: aload 1
      // 76: aload 2
      // 77: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Lcom/l7tech/policy/assertion/Assertion;Lcom/l7tech/policy/assertion/AssertionTranslator;Lcom/l7tech/util/Functions$UnaryVoid;)V
      // 7a: goto 81
      // 7d: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 80: athrow
      // 81: aload 1
      // 82: aload 0
      // 83: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // 88: goto cf
      // 8b: astore 3
      // 8c: getstatic com/l7tech/policy/variable/PolicyVariableUtils.a Ljava/util/logging/Logger;
      // 8f: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 92: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 95: ifeq b9
      // 98: getstatic com/l7tech/policy/variable/PolicyVariableUtils.a Ljava/util/logging/Logger;
      // 9b: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 9e: aload 3
      // 9f: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // a2: getstatic com/l7tech/policy/variable/PolicyVariableUtils.b [Ljava/lang/String;
      // a5: bipush 7
      // a7: aaload
      // a8: swap
      // a9: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // ae: aload 3
      // af: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // b2: goto b9
      // b5: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // b8: athrow
      // b9: aload 1
      // ba: aload 0
      // bb: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // c0: goto cf
      // c3: astore 6
      // c5: aload 1
      // c6: aload 0
      // c7: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // cc: aload 6
      // ce: athrow
      // cf: return
      // try (48 -> 55): 56 com/l7tech/policy/assertion/PolicyAssertionException
      // try (36 -> 41): 42 com/l7tech/policy/assertion/PolicyAssertionException
      // try (2 -> 9): 9 com/l7tech/policy/assertion/PolicyAssertionException
      // try (0 -> 5): 6 com/l7tech/policy/assertion/PolicyAssertionException
      // try (44 -> 58): 62 com/l7tech/policy/assertion/PolicyAssertionException
      // try (44 -> 58): 85 null
      // try (63 -> 78): 79 com/l7tech/policy/assertion/PolicyAssertionException
      // try (62 -> 81): 85 null
      // try (85 -> 86): 85 null
   }

   public static Map<String, VariableMetadata> getVariablesSetByPredecessorsAndSelf(Assertion var0) {
      return getVariablesSetByPredecessors(var0, CurrentAssertionTranslator.get(), CurrentInterfaceDescription.get(), true);
   }

   public static Map<String, VariableMetadata> getVariablesSetByPredecessors(Assertion var0) {
      return getVariablesSetByPredecessors(var0, CurrentAssertionTranslator.get(), CurrentInterfaceDescription.get(), false);
   }

   @NotNull
   public static Map<String, VariableMetadata> getVariablesSetByPredecessors(
      @Nullable Assertion param0, @Nullable AssertionTranslator param1, @Nullable EncapsulatedAssertionConfig param2, boolean param3
   ) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: new java/util/TreeMap
      // 003: dup
      // 004: getstatic java/lang/String.CASE_INSENSITIVE_ORDER Ljava/util/Comparator;
      // 007: invokespecial java/util/TreeMap.<init> (Ljava/util/Comparator;)V
      // 00a: astore 4
      // 00c: aconst_null
      // 00d: aload 2
      // 00e: if_acmpeq 060
      // 011: aload 2
      // 012: invokevirtual com/l7tech/objectmodel/encass/EncapsulatedAssertionConfig.getArgumentDescriptors ()Ljava/util/Set;
      // 015: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 01a: astore 5
      // 01c: aload 5
      // 01e: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 023: ifeq 060
      // 026: aload 5
      // 028: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 02d: checkcast com/l7tech/objectmodel/encass/EncapsulatedAssertionArgumentDescriptor
      // 030: astore 6
      // 032: aload 6
      // 034: invokevirtual com/l7tech/objectmodel/encass/EncapsulatedAssertionArgumentDescriptor.getArgumentName ()Ljava/lang/String;
      // 037: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 03a: astore 7
      // 03c: new com/l7tech/policy/variable/VariableMetadata
      // 03f: dup
      // 040: aload 7
      // 042: bipush 0
      // 043: bipush 1
      // 044: aload 7
      // 046: bipush 1
      // 047: aload 6
      // 049: invokevirtual com/l7tech/objectmodel/encass/EncapsulatedAssertionArgumentDescriptor.dataType ()Lcom/l7tech/policy/variable/DataType;
      // 04c: invokespecial com/l7tech/policy/variable/VariableMetadata.<init> (Ljava/lang/String;ZZLjava/lang/String;ZLcom/l7tech/policy/variable/DataType;)V
      // 04f: astore 8
      // 051: aload 4
      // 053: aload 7
      // 055: aload 8
      // 057: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 05c: pop
      // 05d: goto 01c
      // 060: aload 0
      // 061: ifnull 1ad
      // 064: aload 0
      // 065: invokevirtual com/l7tech/policy/assertion/Assertion.getPath ()[Lcom/l7tech/policy/assertion/Assertion;
      // 068: bipush 0
      // 069: aaload
      // 06a: astore 5
      // 06c: aload 5
      // 06e: invokevirtual com/l7tech/policy/assertion/Assertion.preorderIterator ()Ljava/util/Iterator;
      // 071: astore 6
      // 073: aload 6
      // 075: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 07a: ifeq 1ad
      // 07d: aload 6
      // 07f: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 084: checkcast com/l7tech/policy/assertion/Assertion
      // 087: astore 7
      // 089: aload 7
      // 08b: aload 0
      // 08c: if_acmpne 0a1
      // 08f: iload 3
      // 090: ifne 0a1
      // 093: goto 09a
      // 096: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 099: athrow
      // 09a: goto 1ad
      // 09d: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a0: athrow
      // 0a1: aload 7
      // 0a3: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 0a6: ifeq 0c9
      // 0a9: aload 7
      // 0ab: instanceof com/l7tech/policy/assertion/SetsVariables
      // 0ae: ifeq 0c9
      // 0b1: goto 0b8
      // 0b4: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0b7: athrow
      // 0b8: aload 7
      // 0ba: checkcast com/l7tech/policy/assertion/SetsVariables
      // 0bd: aload 4
      // 0bf: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Lcom/l7tech/policy/assertion/SetsVariables;Ljava/util/Map;)V
      // 0c2: goto 19d
      // 0c5: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0c8: athrow
      // 0c9: aload 7
      // 0cb: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 0ce: ifeq 19d
      // 0d1: aload 7
      // 0d3: instanceof com/l7tech/policy/assertion/Include
      // 0d6: ifeq 19d
      // 0d9: goto 0e0
      // 0dc: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0df: athrow
      // 0e0: aload 1
      // 0e1: ifnull 19d
      // 0e4: goto 0eb
      // 0e7: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ea: athrow
      // 0eb: aload 1
      // 0ec: aload 7
      // 0ee: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translate (Lcom/l7tech/policy/assertion/Assertion;)Lcom/l7tech/policy/assertion/Assertion; 2
      // 0f3: astore 8
      // 0f5: new com/l7tech/policy/assertion/NewPreorderIterator
      // 0f8: dup
      // 0f9: aload 8
      // 0fb: aload 1
      // 0fc: invokespecial com/l7tech/policy/assertion/NewPreorderIterator.<init> (Lcom/l7tech/policy/assertion/Assertion;Lcom/l7tech/policy/assertion/AssertionTranslator;)V
      // 0ff: astore 9
      // 101: aload 7
      // 103: aload 8
      // 105: if_acmpeq 149
      // 108: aload 9
      // 10a: invokevirtual com/l7tech/policy/assertion/NewPreorderIterator.hasNext ()Z
      // 10d: ifeq 149
      // 110: goto 117
      // 113: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 116: athrow
      // 117: aload 9
      // 119: invokevirtual com/l7tech/policy/assertion/NewPreorderIterator.next ()Lcom/l7tech/policy/assertion/Assertion;
      // 11c: astore 10
      // 11e: aload 10
      // 120: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 123: ifeq 146
      // 126: aload 10
      // 128: instanceof com/l7tech/policy/assertion/SetsVariables
      // 12b: ifeq 146
      // 12e: goto 135
      // 131: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 134: athrow
      // 135: aload 10
      // 137: checkcast com/l7tech/policy/assertion/SetsVariables
      // 13a: aload 4
      // 13c: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Lcom/l7tech/policy/assertion/SetsVariables;Ljava/util/Map;)V
      // 13f: goto 146
      // 142: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 145: athrow
      // 146: goto 108
      // 149: aload 1
      // 14a: aload 7
      // 14c: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // 151: goto 19d
      // 154: astore 8
      // 156: getstatic com/l7tech/policy/variable/PolicyVariableUtils.a Ljava/util/logging/Logger;
      // 159: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 15c: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 15f: ifeq 185
      // 162: getstatic com/l7tech/policy/variable/PolicyVariableUtils.a Ljava/util/logging/Logger;
      // 165: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 168: aload 8
      // 16a: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 16d: getstatic com/l7tech/policy/variable/PolicyVariableUtils.b [Ljava/lang/String;
      // 170: bipush 7
      // 172: aaload
      // 173: swap
      // 174: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 179: aload 8
      // 17b: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 17e: goto 185
      // 181: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 184: athrow
      // 185: aload 1
      // 186: aload 7
      // 188: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // 18d: goto 19d
      // 190: astore 11
      // 192: aload 1
      // 193: aload 7
      // 195: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // 19a: aload 11
      // 19c: athrow
      // 19d: aload 7
      // 19f: aload 0
      // 1a0: if_acmpne 1aa
      // 1a3: goto 1ad
      // 1a6: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1a9: athrow
      // 1aa: goto 073
      // 1ad: aload 4
      // 1af: dup
      // 1b0: ifnonnull 1be
      // 1b3: bipush 0
      // 1b4: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (I)V
      // 1b7: goto 1be
      // 1ba: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1bd: athrow
      // 1be: areturn
      // try (123 -> 133): 134 com/l7tech/policy/assertion/PolicyAssertionException
      // try (120 -> 126): 127 com/l7tech/policy/assertion/PolicyAssertionException
      // try (108 -> 114): 115 com/l7tech/policy/assertion/PolicyAssertionException
      // try (87 -> 95): 96 com/l7tech/policy/assertion/PolicyAssertionException
      // try (84 -> 90): 91 com/l7tech/policy/assertion/PolicyAssertionException
      // try (71 -> 82): 82 com/l7tech/policy/assertion/PolicyAssertionException
      // try (68 -> 74): 75 com/l7tech/policy/assertion/PolicyAssertionException
      // try (60 -> 66): 66 com/l7tech/policy/assertion/PolicyAssertionException
      // try (57 -> 62): 63 com/l7tech/policy/assertion/PolicyAssertionException
      // try (98 -> 137): 141 com/l7tech/policy/assertion/PolicyAssertionException
      // try (98 -> 137): 164 null
      // try (142 -> 157): 158 com/l7tech/policy/assertion/PolicyAssertionException
      // try (141 -> 160): 164 null
      // try (164 -> 165): 164 null
      // try (170 -> 174): 174 com/l7tech/policy/assertion/PolicyAssertionException
      // try (177 -> 182): 183 com/l7tech/policy/assertion/PolicyAssertionException
   }

   private static void a(SetsVariables var0, Map<String, VariableMetadata> var1) {
      for (VariableMetadata var5 : getVariablesSetNoThrow(var0)) {
         String var6 = var5.getName();

         try {
            if (var1.containsKey(var6)) {
               var1.remove(var6);
            }
         } catch (VariableNameSyntaxException var7) {
            throw a(var7);
         }

         var1.put(var6, var5);
      }
   }

   public static String[] getVariablesUsedByPolicyButNotPreviouslySet(@Nullable Assertion var0, @Nullable AssertionTranslator var1) {
      TreeMap var2 = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
      return a(var2, var0, var1);
   }

   private static String[] a(Map<String, VariableMetadata> var0, @Nullable Assertion var1, @Nullable AssertionTranslator var2) {
      try {
         if (var1 == null) {
            return new String[0];
         }
      } catch (PolicyAssertionException var29) {
         throw a(var29);
      }

      TreeSet var3 = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
      Iterator var4 = var1.preorderIterator();

      while (var4.hasNext()) {
         Assertion var5 = (Assertion)var4.next();

         try {
            if (!var5.isEnabled()) {
               continue;
            }
         } catch (PolicyAssertionException var27) {
            throw a(var27);
         }

         if (var5 instanceof UsesVariables) {
            String[] var6 = getVariablesUsedNoThrow((UsesVariables)var5);

            for (String var10 : var6) {
               try {
                  if (!a(var10, var0)) {
                     var3.add(var10);
                  }
               } catch (PolicyAssertionException var28) {
                  throw a(var28);
               }
            }
         }

         try {
            if (var5 instanceof SetsVariables) {
               a((SetsVariables)var5, var0);
            }
         } catch (PolicyAssertionException var25) {
            throw a(var25);
         }

         try {
            if (!(var5 instanceof Include) || var2 == null) {
               continue;
            }
         } catch (PolicyAssertionException var26) {
            throw a(var26);
         }

         try {
            Assertion var31 = var2.translate(var5);

            try {
               if (var5 != var31) {
                  var3.addAll(Arrays.asList(a(var0, var31, var2)));
               }
            } catch (PolicyAssertionException var22) {
               throw a(var22);
            }
         } catch (PolicyAssertionException var23) {
            PolicyAssertionException var30 = var23;

            try {
               if (a.isLoggable(Level.FINE)) {
                  a.log(Level.FINE, b[4] + ExceptionUtils.getMessage(var30), var30);
               }
            } catch (PolicyAssertionException var21) {
               throw a(var21);
            }
         } finally {
            var2.translationFinished(var5);
         }
      }

      return var3.toArray(new String[var3.size()]);
   }

   private static boolean a(String var0, Map<String, VariableMetadata> var1) {
      return var1.containsKey(var0);
   }

   public static Map<String, VariableMetadata> getVariablesSetByPolicyButNotSubsequentlyUsed(Assertion var0, AssertionTranslator var1) {
      TreeMap var2 = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);

      try {
         if (var0 == null) {
            return var2;
         }
      } catch (PolicyAssertionException var26) {
         throw a(var26);
      }

      Iterator var3 = var0.preorderIterator();

      while (var3.hasNext()) {
         Assertion var4 = (Assertion)var3.next();

         try {
            if (!var4.isEnabled()) {
               continue;
            }
         } catch (PolicyAssertionException var25) {
            throw a(var25);
         }

         if (var4 instanceof UsesVariables) {
            String[] var5 = getVariablesUsedNoThrow((UsesVariables)var4);

            for (String var9 : var5) {
               var2.remove(var9);
            }
         }

         try {
            if (var4 instanceof SetsVariables) {
               a((SetsVariables)var4, var2);
            }
         } catch (PolicyAssertionException var23) {
            throw a(var23);
         }

         try {
            if (!(var4 instanceof Include) || var1 == null) {
               continue;
            }
         } catch (PolicyAssertionException var24) {
            throw a(var24);
         }

         try {
            Assertion var28 = var1.translate(var4);

            try {
               if (var4 != var28) {
                  var2.putAll(getVariablesSetByPolicyButNotSubsequentlyUsed(var28, var1));
               }
            } catch (PolicyAssertionException var20) {
               throw a(var20);
            }
         } catch (PolicyAssertionException var21) {
            PolicyAssertionException var27 = var21;

            try {
               if (a.isLoggable(Level.FINE)) {
                  a.log(Level.FINE, b[7] + ExceptionUtils.getMessage(var27), var27);
               }
            } catch (PolicyAssertionException var19) {
               throw a(var19);
            }
         } finally {
            var1.translationFinished(var4);
         }
      }

      return var2;
   }

   public static Set<String> getVariablesUsedBySuccessors(Assertion var0) {
      return getVariablesUsedBySuccessors(var0, CurrentAssertionTranslator.get());
   }

   public static Set<String> getVariablesUsedBySuccessors(Assertion var0, AssertionTranslator var1) {
      TreeSet var2 = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
      if (var0 != null) {
         for (CompositeAssertion var3 = var0.getParent(); var3 != null; var3 = var0.getParent()) {
            boolean var4 = false;

            for (Object var6 : var3.getChildren()) {
               Assertion var7 = (Assertion)var6;
               if (var7 == var0) {
                  var4 = true;
               } else {
                  try {
                     if (var4) {
                        a(var7, var2, var1);
                     }
                  } catch (VariableNameSyntaxException var8) {
                     throw a(var8);
                  }
               }
            }

            var0 = var0.getParent();
         }
      }

      return var2;
   }

   private static void a(Assertion var0, Set<String> var1, AssertionTranslator var2) {
      try {
         if (!var0.isEnabled()) {
            return;
         }
      } catch (PolicyAssertionException var13) {
         throw a(var13);
      }

      if (var0 instanceof CompositeAssertion var3) {
         for (Assertion var5 : var3.getChildren()) {
            a(var5, var1, var2);
         }
      }

      label97: {
         try {
            if (!(var0 instanceof Include) || var2 == null) {
               break label97;
            }
         } catch (PolicyAssertionException var16) {
            throw a(var16);
         }

         try {
            Assertion var18 = var2.translate(var0);
            NewPreorderIterator var20 = new NewPreorderIterator(var18, var2);

            while (var20.hasNext()) {
               Assertion var21 = var20.next();
               a(var21, var1, var2);
            }
         } catch (PolicyAssertionException var14) {
            PolicyAssertionException var17 = var14;

            try {
               if (a.isLoggable(Level.FINE)) {
                  a.log(Level.FINE, b[7] + ExceptionUtils.getMessage(var17), var17);
               }
            } catch (PolicyAssertionException var12) {
               throw a(var12);
            }
         } finally {
            var2.translationFinished(var0);
         }
      }

      if (var0 instanceof UsesVariables var19) {
         var1.addAll(Arrays.asList(var19.getVariablesUsed()));
      }
   }

   public static VariableMetadata[] getVariablesSetNoThrow(SetsVariables var0) {
      try {
         VariableMetadata[] var1 = var0.getVariablesSet();
         if (var1 != null) {
            return var1;
         }
      } catch (VariableNameSyntaxException var3) {
         Logger var10000 = a;
         Level var10001 = Level.WARNING;
         String var10002 = var0.getClass().getName();
         String var10003 = ExceptionUtils.getMessage(var3);
         String[] var2 = b;
         var10000.log(var10001, var2[6] + var10002 + var2[2] + var10003);
      }

      return new VariableMetadata[0];
   }

   public static String[] getVariablesUsedNoThrow(UsesVariables var0) {
      try {
         String[] var1 = var0.getVariablesUsed();
         if (var1 != null) {
            return var1;
         }
      } catch (VariableNameSyntaxException var3) {
         Logger var10000 = a;
         Level var10001 = Level.WARNING;
         String var10002 = var0.getClass().getName();
         String var10003 = ExceptionUtils.getMessage(var3);
         String[] var2 = b;
         var10000.log(var10001, var2[5] + var10002 + var2[1] + var10003);
      }

      return new String[0];
   }

   public static boolean usesAnyVariable(Assertion param0, String... param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: ifnull 70
      // 04: aload 0
      // 05: instanceof com/l7tech/policy/assertion/UsesVariables
      // 08: ifeq 70
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: aload 1
      // 13: ifnull 70
      // 16: goto 1d
      // 19: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1c: athrow
      // 1d: aload 0
      // 1e: checkcast com/l7tech/policy/assertion/UsesVariables
      // 21: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.getVariablesUsedNoThrow (Lcom/l7tech/policy/assertion/UsesVariables;)[Ljava/lang/String;
      // 24: astore 2
      // 25: aload 2
      // 26: astore 3
      // 27: aload 3
      // 28: arraylength
      // 29: istore 4
      // 2b: bipush 0
      // 2c: istore 5
      // 2e: iload 5
      // 30: iload 4
      // 32: if_icmpge 70
      // 35: aload 3
      // 36: iload 5
      // 38: aaload
      // 39: astore 6
      // 3b: aload 1
      // 3c: astore 7
      // 3e: aload 7
      // 40: arraylength
      // 41: istore 8
      // 43: bipush 0
      // 44: istore 9
      // 46: iload 9
      // 48: iload 8
      // 4a: if_icmpge 6a
      // 4d: aload 7
      // 4f: iload 9
      // 51: aaload
      // 52: astore 10
      // 54: aload 6
      // 56: aload 10
      // 58: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 5b: ifeq 64
      // 5e: bipush 1
      // 5f: ireturn
      // 60: invokestatic com/l7tech/policy/variable/PolicyVariableUtils.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 63: athrow
      // 64: iinc 9 1
      // 67: goto 46
      // 6a: iinc 5 1
      // 6d: goto 2e
      // 70: bipush 0
      // 71: ireturn
      // try (0 -> 5): 6 com/l7tech/policy/variable/VariableNameSyntaxException
      // try (2 -> 10): 11 com/l7tech/policy/variable/VariableNameSyntaxException
      // try (45 -> 51): 51 com/l7tech/policy/variable/VariableNameSyntaxException
   }

   private PolicyVariableUtils() {
   }

   static {
      String[] var5 = new String[9];
      int var3 = 0;
      String var2 = "ZU,k<\u0007\u0005\\R4X.&\tIr!m/\u0010\bXS=N.\u001a\u001eN\u0002\u0007\u0010\u0002\u0007\u0010.^_5\u00121B\u0018XS0\u0012-\u001a\u0000TS!\u0012+\u0014\u001eTQ:Q8Z<R\\1^$#\rOY9_1\u00109IY4N\u001dxB*R/U\u0018OQ6N1\u0014\u0018T^?\u001d<\u0006\u001fXB,T2\u001bV\u001d h^9_1\u0010LI_xZ8\u0001LKQ*T<\u0017\u0000XCxH.\u0010\b\u001d_6\u001d\u001fh^9_1\u0010LI_xZ8\u0001LKQ*T<\u0017\u0000XCxN8\u0001LR^x";
      int var4 = "ZU,k<\u0007\u0005\\R4X.&\tIr!m/\u0010\bXS=N.\u001a\u001eN\u0002\u0007\u0010\u0002\u0007\u0010.^_5\u00121B\u0018XS0\u0012-\u001a\u0000TS!\u0012+\u0014\u001eTQ:Q8Z<R\\1^$#\rOY9_1\u00109IY4N\u001dxB*R/U\u0018OQ6N1\u0014\u0018T^?\u001d<\u0006\u001fXB,T2\u001bV\u001d h^9_1\u0010LI_xZ8\u0001LKQ*T<\u0017\u0000XCxH.\u0010\b\u001d_6\u001d\u001fh^9_1\u0010LI_xZ8\u0001LKQ*T<\u0017\u0000XCxN8\u0001LR^x"
         .length();
      char var1 = 29;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 77;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     a = Logger.getLogger(PolicyVariableUtils.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "g]5M0J\u0007PN)Q.\u000b\u0007KA \u0002#\u0019\u0000G]3K-\u0004I\u0002*ba(V\f\u001f\u001fN\u000f*G6\u0002\u001cF\u000fbQlO\u0000\u0002B2Q6J\u001dM[gP'\u001e\u0006PAgL7\u0006\u001f";
                  var4 = "g]5M0J\u0007PN)Q.\u000b\u0007KA \u0002#\u0019\u0000G]3K-\u0004I\u0002*ba(V\f\u001f\u001fN\u000f*G6\u0002\u001cF\u000fbQlO\u0000\u0002B2Q6J\u001dM[gP'\u001e\u0006PAgL7\u0006\u001f"
                     .length();
                  var1 = 29;
                  var7 = -1;
            }

            var10000 = 82;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static Exception a(Exception var0) {
      return var0;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 33);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 112;
            case 1 -> 125;
            case 2 -> 21;
            case 3 -> 112;
            case 4 -> 16;
            case 5 -> 56;
            default -> 33;
         });
      }

      return new String(var10001).intern();
   }
}
