package com.l7tech.policy.assertion;

import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.assertion.annotation.ProcessesMultipart;
import com.l7tech.policy.assertion.annotation.ProcessesRequest;
import com.l7tech.policy.assertion.annotation.ProcessesResponse;
import com.l7tech.policy.assertion.annotation.RequiresSOAP;
import com.l7tech.policy.assertion.composite.CompositeAssertion;
import com.l7tech.policy.validator.ValidatorFlag;
import com.l7tech.util.ClassUtils;
import com.l7tech.util.DeserializeSafe;
import jakarta.persistence.Transient;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import org.jetbrains.annotations.Nullable;

@DeserializeSafe
public abstract class Assertion implements Cloneable, Serializable {
   private static final Map<String, DefaultAssertionMetadata> metadataCache;
   public static final int MIN_DISPLAYED_ORDINAL = 2;
   protected transient CompositeAssertion parent;
   private transient int ordinal;
   private transient Goid ownerPolicyGoid = null;
   private transient boolean locked = false;
   private boolean enabled = true;
   @Nullable
   private Assertion.Comment assertionComment;
   private static final long serialVersionUID = -2639281346815614287L;
   private static final String[] a;

   public Assertion() {
      this.parent = null;
      this.ordinal = 1;
   }

   public CompositeAssertion getParent() {
      return this.parent;
   }

   protected void setParent(@Nullable CompositeAssertion var1) {
      this.checkLocked();
      this.parent = var1;
   }

   public boolean isEnabled() {
      return this.enabled;
   }

   public void setEnabled(boolean var1) {
      this.checkLocked();
      this.enabled = var1;
   }

   @Nullable
   public Assertion.Comment getAssertionComment() {
      return this.assertionComment;
   }

   public void setAssertionComment(@Nullable Assertion.Comment var1) {
      this.checkLocked();
      this.assertionComment = var1;
   }

   public void treeChanged() {
      CompositeAssertion var1 = this.getParent();

      try {
         if (var1 == null) {
            this.renumber(1);
            return;
         }
      } catch (RuntimeException var2) {
         throw b(var2);
      }

      var1.treeChanged();
   }

   public int getOrdinal() {
      return this.ordinal;
   }

   public Assertion getAssertionWithOrdinal(int var1) {
      try {
         return this.getOrdinal() == var1 ? this : null;
      } catch (RuntimeException var2) {
         throw b(var2);
      }
   }

   protected static int renumber(Assertion var0, int var1) {
      return var0.renumber(var1);
   }

   protected static void setParent(Assertion var0, CompositeAssertion var1) {
      var0.setParent(var1);
   }

   public static boolean isSibling(Assertion param0, Assertion 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: aload 1
      // 02: if_acmpeq 1f
      // 05: aload 0
      // 06: getfield com/l7tech/policy/assertion/Assertion.parent Lcom/l7tech/policy/assertion/composite/CompositeAssertion;
      // 09: aload 1
      // 0a: getfield com/l7tech/policy/assertion/Assertion.parent Lcom/l7tech/policy/assertion/composite/CompositeAssertion;
      // 0d: if_acmpne 1f
      // 10: goto 17
      // 13: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16: athrow
      // 17: bipush 1
      // 18: goto 20
      // 1b: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1e: athrow
      // 1f: bipush 0
      // 20: ireturn
      // try (0 -> 8): 9 java/lang/RuntimeException
      // try (3 -> 13): 13 java/lang/RuntimeException
   }

   protected int renumber(int var1) {
      this.checkLocked();
      this.ordinal = var1;
      return var1 + 1;
   }

   @Override
   public Object clone() {
      try {
         Assertion var1 = (Assertion)super.clone();

         try {
            if (this.assertionComment != null) {
               var1.setAssertionComment(this.assertionComment.clone());
            }
         } catch (CloneNotSupportedException var3) {
            throw b(var3);
         }

         var1.setParent(null);
         return var1;
      } catch (CloneNotSupportedException var4) {
         throw new RuntimeException(var4);
      }
   }

   public Assertion getCopy() {
      return (Assertion)this.clone();
   }

   public boolean isCredentialSource() {
      return false;
   }

   public boolean isCredentialModifier() {
      return false;
   }

   public Iterator<Assertion> preorderIterator() {
      return new c(this, this);
   }

   public Iterator<Assertion> preorderIterator(AssertionTranslator var1) throws PolicyAssertionException {
      return new NewPreorderIterator(this, var1);
   }

   public Assertion[] getPath() {
      Assertion var1 = this;
      LinkedList var2 = new LinkedList();

      while (var1 != null) {
         var2.addFirst(var1);
         var1 = var1.getParent();
      }

      return var2.toArray(new Assertion[var2.size()]);
   }

   public String toIndentedString(int var1) {
      StringBuilder var2 = new StringBuilder();
      int var3 = 0;

      try {
         while (var3 < var1) {
            var2.append(a[0]);
            var3++;
         }
      } catch (RuntimeException var4) {
         throw b(var4);
      }

      var2.append(this.toString());
      var2.append("\n");
      return var2.toString();
   }

   @Override
   public String toString() {
      String var1 = this.getClass().getName();
      return var1.substring(var1.lastIndexOf(46) + 1);
   }

   public Goid ownerPolicyGoid() {
      Goid var1 = this.ownerPolicyGoid;
      if (var1 == null) {
         CompositeAssertion var2 = this.getParent();
         if (var2 != null) {
            var1 = var2.ownerPolicyGoid();
         }
      }

      return var1;
   }

   public void ownerPolicyGoid(Goid var1) {
      label17: {
         try {
            this.checkLocked();
            if (var1 == null || !Goid.isDefault(var1)) {
               break label17;
            }
         } catch (RuntimeException var2) {
            throw b(var2);
         }

         var1 = null;
      }

      this.ownerPolicyGoid = var1;
   }

   public static Assertion translate(Assertion var0, AssertionTranslator var1) throws PolicyAssertionException {
      Assertion var2 = var1.translate(var0);
      if (var2 instanceof CompositeAssertion var3) {
         for (int var4 = 0; var4 < var3.getChildren().size(); var4++) {
            Assertion var5 = var3.getChildren().get(var4);
            Assertion var6 = translate(var5, var1);

            try {
               if (var5 != var6) {
                  var3.replaceChild(var5, var6);
               }
            } catch (PolicyAssertionException var7) {
               throw b(var7);
            }
         }
      }

      var1.translationFinished(var0);
      return var2;
   }

   void simplify() {
   }

   public static Assertion simplify(Assertion param0, boolean param1, boolean 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:
      // 000: aload 0
      // 001: instanceof com/l7tech/policy/assertion/composite/CompositeAssertion
      // 004: ifeq 153
      // 007: iload 2
      // 008: ifne 01e
      // 00b: goto 012
      // 00e: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 011: athrow
      // 012: aload 0
      // 013: aconst_null
      // 014: invokevirtual com/l7tech/policy/assertion/Assertion.setAssertionComment (Lcom/l7tech/policy/assertion/Assertion$Comment;)V
      // 017: goto 01e
      // 01a: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01d: athrow
      // 01e: aload 0
      // 01f: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 022: astore 3
      // 023: aload 3
      // 024: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getChildren ()Ljava/util/List;
      // 027: astore 4
      // 029: aload 4
      // 02b: invokeinterface java/util/List.size ()I 1
      // 030: bipush 1
      // 031: if_icmpge 03a
      // 034: aconst_null
      // 035: areturn
      // 036: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 039: athrow
      // 03a: iload 1
      // 03b: ifeq 076
      // 03e: aload 4
      // 040: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 045: astore 5
      // 047: aload 5
      // 049: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 04e: ifeq 076
      // 051: aload 5
      // 053: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 058: checkcast com/l7tech/policy/assertion/Assertion
      // 05b: astore 6
      // 05d: iload 2
      // 05e: ifne 06e
      // 061: aload 6
      // 063: aconst_null
      // 064: invokevirtual com/l7tech/policy/assertion/Assertion.setAssertionComment (Lcom/l7tech/policy/assertion/Assertion$Comment;)V
      // 067: goto 06e
      // 06a: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 06d: athrow
      // 06e: aload 6
      // 070: invokevirtual com/l7tech/policy/assertion/Assertion.simplify ()V
      // 073: goto 047
      // 076: aload 3
      // 077: instanceof com/l7tech/policy/assertion/composite/AllAssertion
      // 07a: ifeq 132
      // 07d: bipush 0
      // 07e: istore 5
      // 080: aload 4
      // 082: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 087: astore 6
      // 089: aload 6
      // 08b: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 090: ifeq 0ad
      // 093: aload 6
      // 095: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 09a: checkcast com/l7tech/policy/assertion/Assertion
      // 09d: astore 7
      // 09f: aload 7
      // 0a1: instanceof com/l7tech/policy/assertion/composite/AllAssertion
      // 0a4: ifeq 0aa
      // 0a7: bipush 1
      // 0a8: istore 5
      // 0aa: goto 089
      // 0ad: iload 5
      // 0af: ifeq 132
      // 0b2: aload 3
      // 0b3: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getCopy ()Lcom/l7tech/policy/assertion/Assertion;
      // 0b6: checkcast com/l7tech/policy/assertion/composite/AllAssertion
      // 0b9: astore 6
      // 0bb: aload 3
      // 0bc: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.clearChildren ()V
      // 0bf: aload 6
      // 0c1: invokevirtual com/l7tech/policy/assertion/composite/AllAssertion.getChildren ()Ljava/util/List;
      // 0c4: astore 4
      // 0c6: aload 4
      // 0c8: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 0cd: astore 7
      // 0cf: aload 7
      // 0d1: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 0d6: ifeq 12f
      // 0d9: aload 7
      // 0db: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 0e0: checkcast com/l7tech/policy/assertion/Assertion
      // 0e3: astore 8
      // 0e5: aload 8
      // 0e7: instanceof com/l7tech/policy/assertion/composite/AllAssertion
      // 0ea: ifeq 126
      // 0ed: aload 8
      // 0ef: checkcast com/l7tech/policy/assertion/composite/AllAssertion
      // 0f2: astore 9
      // 0f4: aload 9
      // 0f6: invokevirtual com/l7tech/policy/assertion/composite/AllAssertion.getChildren ()Ljava/util/List;
      // 0f9: astore 10
      // 0fb: aload 10
      // 0fd: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 102: astore 11
      // 104: aload 11
      // 106: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 10b: ifeq 123
      // 10e: aload 11
      // 110: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 115: checkcast com/l7tech/policy/assertion/Assertion
      // 118: astore 12
      // 11a: aload 3
      // 11b: aload 12
      // 11d: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.addChild (Lcom/l7tech/policy/assertion/Assertion;)V
      // 120: goto 104
      // 123: goto 12c
      // 126: aload 3
      // 127: aload 8
      // 129: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.addChild (Lcom/l7tech/policy/assertion/Assertion;)V
      // 12c: goto 0cf
      // 12f: goto 000
      // 132: aload 4
      // 134: invokeinterface java/util/List.size ()I 1
      // 139: bipush 1
      // 13a: if_icmpeq 144
      // 13d: goto 153
      // 140: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 143: athrow
      // 144: aload 4
      // 146: bipush 0
      // 147: invokeinterface java/util/List.get (I)Ljava/lang/Object; 2
      // 14c: checkcast com/l7tech/policy/assertion/Assertion
      // 14f: astore 0
      // 150: goto 000
      // 153: aload 0
      // 154: areturn
      // try (0 -> 5): 6 java/lang/RuntimeException
      // try (3 -> 11): 12 java/lang/RuntimeException
      // try (20 -> 26): 26 java/lang/RuntimeException
      // try (40 -> 45): 46 java/lang/RuntimeException
      // try (122 -> 127): 127 java/lang/RuntimeException
   }

   public static Assertion filterOutDisabledAssertions(Assertion var0) {
      boolean[] var1 = new boolean[]{false};

      try {
         recursiveFilterOutDisabledAssertionsAndComments(var0, new a(var1));
         if (var1[0]) {
            return null;
         }
      } catch (RuntimeException var2) {
         throw b(var2);
      }

      return var0;
   }

   private static void recursiveFilterOutDisabledAssertionsAndComments(Assertion param0, Iterator 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 20
      // 04: aload 0
      // 05: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 08: ifeq 20
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: aload 0
      // 13: instanceof com/l7tech/policy/assertion/CommentAssertion
      // 16: ifeq 2b
      // 19: goto 20
      // 1c: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 1
      // 21: invokeinterface java/util/Iterator.remove ()V 1
      // 26: return
      // 27: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2a: athrow
      // 2b: aload 0
      // 2c: instanceof com/l7tech/policy/assertion/composite/CompositeAssertion
      // 2f: ifeq 64
      // 32: aload 0
      // 33: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 36: astore 2
      // 37: aload 2
      // 38: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getChildren ()Ljava/util/List;
      // 3b: astore 3
      // 3c: aload 3
      // 3d: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 42: astore 4
      // 44: aload 4
      // 46: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 4b: ifeq 64
      // 4e: aload 4
      // 50: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 55: checkcast com/l7tech/policy/assertion/Assertion
      // 58: aload 4
      // 5a: invokestatic com/l7tech/policy/assertion/Assertion.recursiveFilterOutDisabledAssertionsAndComments (Lcom/l7tech/policy/assertion/Assertion;Ljava/util/Iterator;)V
      // 5d: goto 44
      // 60: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 63: athrow
      // 64: return
      // try (0 -> 5): 6 java/lang/RuntimeException
      // try (2 -> 11): 12 java/lang/RuntimeException
      // try (8 -> 17): 17 java/lang/RuntimeException
      // try (31 -> 40): 40 java/lang/RuntimeException
   }

   public static boolean contains(@Nullable Assertion var0, Class var1) {
      return contains(var0, var1, true);
   }

   public static boolean contains(@Nullable Assertion var0, Class var1, boolean var2) {
      try {
         if (null != find(var0, var1, var2)) {
            return true;
         }
      } catch (RuntimeException var3) {
         throw b(var3);
      }

      return false;
   }

   public static <T extends Assertion> T find(@Nullable Assertion param0, Class<T> param1, boolean 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 1
      // 01: aload 0
      // 02: invokevirtual java/lang/Class.isInstance (Ljava/lang/Object;)Z
      // 05: ifeq 44
      // 08: getstatic com/l7tech/policy/assertion/Assertion.$assertionsDisabled Z
      // 0b: ifne 2c
      // 0e: goto 15
      // 11: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: aload 0
      // 16: ifnonnull 2c
      // 19: goto 20
      // 1c: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: new java/lang/AssertionError
      // 23: dup
      // 24: invokespecial java/lang/AssertionError.<init> ()V
      // 27: athrow
      // 28: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2b: athrow
      // 2c: iload 2
      // 2d: ifeq 3e
      // 30: aload 0
      // 31: invokevirtual com/l7tech/policy/assertion/Assertion.isEnabled ()Z
      // 34: ifeq 8d
      // 37: goto 3e
      // 3a: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3d: athrow
      // 3e: aload 0
      // 3f: areturn
      // 40: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 43: athrow
      // 44: aload 0
      // 45: instanceof com/l7tech/policy/assertion/composite/CompositeAssertion
      // 48: ifeq 8d
      // 4b: aload 0
      // 4c: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 4f: astore 3
      // 50: aload 3
      // 51: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getChildren ()Ljava/util/List;
      // 54: astore 4
      // 56: aload 4
      // 58: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 5d: astore 5
      // 5f: aload 5
      // 61: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 66: ifeq 8d
      // 69: aload 5
      // 6b: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 70: checkcast com/l7tech/policy/assertion/Assertion
      // 73: astore 6
      // 75: aload 6
      // 77: aload 1
      // 78: iload 2
      // 79: invokestatic com/l7tech/policy/assertion/Assertion.find (Lcom/l7tech/policy/assertion/Assertion;Ljava/lang/Class;Z)Lcom/l7tech/policy/assertion/Assertion;
      // 7c: astore 7
      // 7e: aload 7
      // 80: ifnull 8a
      // 83: aload 7
      // 85: areturn
      // 86: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 89: athrow
      // 8a: goto 5f
      // 8d: aconst_null
      // 8e: areturn
      // try (0 -> 6): 7 java/lang/RuntimeException
      // try (4 -> 11): 12 java/lang/RuntimeException
      // try (9 -> 18): 18 java/lang/RuntimeException
      // try (20 -> 25): 26 java/lang/RuntimeException
      // try (22 -> 30): 30 java/lang/RuntimeException
      // try (56 -> 60): 60 java/lang/RuntimeException
   }

   public static TargetMessageType getTargetMessageType(Assertion var0) {
      TargetMessageType var1 = null;
      if (var0 instanceof MessageTargetable var2) {
         var1 = var2.getTarget();
      } else if (hasAnnotation(var0, ProcessesRequest.class)) {
         var1 = TargetMessageType.REQUEST;
      } else if (hasAnnotation(var0, ProcessesResponse.class)) {
         var1 = TargetMessageType.RESPONSE;
      }

      return var1;
   }

   public static boolean isRequest(Assertion var0) {
      try {
         if (TargetMessageType.REQUEST == getTargetMessageType(var0)) {
            return true;
         }
      } catch (RuntimeException var1) {
         throw b(var1);
      }

      return false;
   }

   public static boolean isResponse(Assertion var0) {
      try {
         if (TargetMessageType.RESPONSE == getTargetMessageType(var0)) {
            return true;
         }
      } catch (RuntimeException var2) {
         throw b(var2);
      }

      try {
         return var0 instanceof RoutingAssertion ? ((RoutingAssertion)var0).needsInitializedResponse() : false;
      } catch (RuntimeException var1) {
         throw b(var1);
      }
   }

   public static boolean isMultipart(Assertion var0) {
      return hasAnnotation(var0, ProcessesMultipart.class);
   }

   public static boolean hasMessageTarget(Assertion param0) {
      // $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: invokestatic com/l7tech/policy/assertion/Assertion.isRequest (Lcom/l7tech/policy/assertion/Assertion;)Z
      // 04: ifne 23
      // 07: aload 0
      // 08: invokestatic com/l7tech/policy/assertion/Assertion.isResponse (Lcom/l7tech/policy/assertion/Assertion;)Z
      // 0b: ifne 23
      // 0e: goto 15
      // 11: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: aload 0
      // 16: instanceof com/l7tech/policy/assertion/MessageTargetable
      // 19: ifeq 2b
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: bipush 1
      // 24: goto 2c
      // 27: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2a: athrow
      // 2b: bipush 0
      // 2c: ireturn
      // try (0 -> 6): 7 java/lang/RuntimeException
      // try (3 -> 12): 13 java/lang/RuntimeException
      // try (9 -> 17): 17 java/lang/RuntimeException
   }

   public static boolean isWSSecurity(Assertion var0) {
      boolean var1 = false;
      if (var0 != null) {
         RequiresSOAP var2 = var0.getClass().getAnnotation(RequiresSOAP.class);
         if (var2 != null) {
            var1 = var2.wss();
         } else {
            var1 = hasFlag(var0, ValidatorFlag.REQUIRE_SIGNATURE);
         }
      }

      return var1;
   }

   private static boolean hasAnnotation(Assertion var0, Class var1) {
      boolean var2 = false;
      if (var0 != null) {
         var2 = var0.getClass().isAnnotationPresent(var1);
      }

      return var2;
   }

   private static boolean hasFlag(Assertion param0, ValidatorFlag 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: bipush 0
      // 01: istore 2
      // 02: aload 0
      // 03: invokevirtual com/l7tech/policy/assertion/Assertion.meta ()Lcom/l7tech/policy/assertion/AssertionMetadata;
      // 06: getstatic com/l7tech/policy/assertion/Assertion.a [Ljava/lang/String;
      // 09: bipush 13
      // 0b: aaload
      // 0c: invokeinterface com/l7tech/policy/assertion/AssertionMetadata.get (Ljava/lang/String;)Ljava/lang/Object; 2
      // 11: checkcast com/l7tech/util/Functions$Unary
      // 14: astore 3
      // 15: aload 3
      // 16: ifnull 46
      // 19: aload 3
      // 1a: aload 0
      // 1b: invokeinterface com/l7tech/util/Functions$Unary.call (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 20: checkcast java/util/Set
      // 23: astore 4
      // 25: aload 4
      // 27: ifnull 44
      // 2a: aload 4
      // 2c: aload 1
      // 2d: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // 32: ifeq 44
      // 35: goto 3c
      // 38: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3b: athrow
      // 3c: bipush 1
      // 3d: goto 45
      // 40: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 43: athrow
      // 44: bipush 0
      // 45: istore 2
      // 46: iload 2
      // 47: ireturn
      // try (17 -> 23): 24 java/lang/RuntimeException
      // try (19 -> 28): 28 java/lang/RuntimeException
   }

   public AssertionMetadata meta() {
      return this.defaultMeta();
   }

   protected final DefaultAssertionMetadata defaultMeta() {
      String var1 = this.getClass().getName();

      try {
         DefaultAssertionMetadata var2 = metadataCache.get(var1);
         if (var2 != null) {
            return var2;
         }

         var2 = new DefaultAssertionMetadata((Assertion)this.getClass().newInstance());
         metadataCache.put(var1, var2);
         return var2;
      } catch (InstantiationException | IllegalAccessException var3) {
         throw this.needsMeta(var1, var3);
      }
   }

   protected final DefaultAssertionMetadata getOrCreateMetaIfRequired(String var1, Function<String, DefaultAssertionMetadata> var2) {
      return metadataCache.computeIfAbsent(var1, var2);
   }

   public static void clearCachedMetadata(String var0) {
      metadataCache.remove(var0);
   }

   private RuntimeException needsMeta(String var1, Exception var2) {
      String[] var3 = a;
      return new RuntimeException(var3[6] + var1 + var3[15], var2);
   }

   @Override
   public final boolean equals(Object var1) {
      return super.equals(var1);
   }

   @Override
   public final int hashCode() {
      return super.hashCode();
   }

   public final String getFeatureSetName() {
      AssertionMetadata var10000 = this.meta();
      String[] var2 = a;
      String var1 = var10000.get(var2[7]);

      try {
         if (var2[16].equals(var1)) {
            return var1;
         }
      } catch (RuntimeException var3) {
         throw b(var3);
      }

      return this.getDefaultFeatureSetName();
   }

   final String getDefaultFeatureSetName() {
      String var1 = this.getFeatureSetClassName();
      String var6;
      if (this instanceof CustomAssertionHolder var3) {
         label32: {
            try {
               if (a[3].equals(var3.getRegisteredCustomFeatureSetName()) && var1 != null) {
                  break label32;
               }
            } catch (RuntimeException var5) {
               throw b(var5);
            }

            AssertionMetadata var10000 = this.meta();
            String[] var4 = a;
            var6 = var10000.get(var4[12]);
            return makeDefaultFeatureSetName(var1, var6);
         }

         var6 = var1.substring(0, var1.lastIndexOf(46));
      } else {
         var6 = this.meta().get(a[14]);
      }

      return makeDefaultFeatureSetName(var1, var6);
   }

   public final String getFeatureSetClassName() {
      // $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: instanceof com/l7tech/policy/assertion/CustomAssertionHolder
      // 04: ifeq 42
      // 07: aload 0
      // 08: checkcast com/l7tech/policy/assertion/CustomAssertionHolder
      // 0b: astore 1
      // 0c: getstatic com/l7tech/policy/assertion/Assertion.a [Ljava/lang/String;
      // 0f: bipush 1
      // 10: aaload
      // 11: aload 1
      // 12: invokevirtual com/l7tech/policy/assertion/CustomAssertionHolder.getRegisteredCustomFeatureSetName ()Ljava/lang/String;
      // 15: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 18: ifeq 3a
      // 1b: aload 1
      // 1c: invokevirtual com/l7tech/policy/assertion/CustomAssertionHolder.getCustomAssertion ()Lcom/l7tech/policy/assertion/ext/CustomAssertion;
      // 1f: ifnull 3a
      // 22: goto 29
      // 25: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28: athrow
      // 29: aload 1
      // 2a: invokevirtual com/l7tech/policy/assertion/CustomAssertionHolder.getCustomAssertion ()Lcom/l7tech/policy/assertion/ext/CustomAssertion;
      // 2d: invokeinterface com/l7tech/policy/assertion/ext/CustomAssertion.getClass ()Ljava/lang/Class; 1
      // 32: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 35: areturn
      // 36: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 39: athrow
      // 3a: aload 0
      // 3b: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 3e: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 41: areturn
      // 42: aload 0
      // 43: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 46: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 49: areturn
      // try (6 -> 16): 17 java/lang/RuntimeException
      // try (13 -> 24): 24 java/lang/RuntimeException
   }

   static String makeDefaultFeatureSetName(String var0, String var1) {
      String var2 = ClassUtils.stripPrefix(var0, var1 + ".");
      String[] var3 = a;
      var2 = ClassUtils.stripPrefix(var2, var3[18]);
      var2 = ClassUtils.stripPrefix(var2, var3[2]);
      var2 = ClassUtils.stripSuffix(var2, var3[9]);
      return var3[8] + var2;
   }

   public static String getFeatureSetName(Class var0) {
      Assertion var1;
      try {
         var1 = (Assertion)var0.newInstance();
      } catch (InstantiationException | IllegalAccessException var3) {
         throw new RuntimeException(var3);
      }

      return var1.getFeatureSetName();
   }

   public static String getBaseName(String var0) {
      try {
         if (var0.endsWith(".")) {
            throw new IllegalArgumentException(a[4]);
         }
      } catch (RuntimeException var5) {
         throw b(var5);
      }

      int var1 = var0.lastIndexOf(".");

      String var10000;
      label25: {
         try {
            if (var1 < 1) {
               var10000 = var0;
               break label25;
            }
         } catch (RuntimeException var4) {
            throw b(var4);
         }

         var10000 = var0.substring(var1 + 1);
      }

      String var2 = var10000;
      String[] var3 = a;
      if (var2.endsWith(var3[5])) {
         var2 = var2.substring(0, var2.length() - var3[5].length());
      }

      return var2;
   }

   public void updateTemporaryData(Assertion var1) {
   }

   private void readObject(ObjectInputStream param1) throws ClassNotFoundException, IOException {
      // $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 1
      // 01: invokevirtual java/io/ObjectInputStream.readFields ()Ljava/io/ObjectInputStream$GetField;
      // 04: astore 2
      // 05: aload 0
      // 06: aload 2
      // 07: getstatic com/l7tech/policy/assertion/Assertion.a [Ljava/lang/String;
      // 0a: bipush 10
      // 0c: aaload
      // 0d: bipush 1
      // 0e: invokevirtual java/io/ObjectInputStream$GetField.get (Ljava/lang/String;Z)Z
      // 11: putfield com/l7tech/policy/assertion/Assertion.enabled Z
      // 14: aload 0
      // 15: getfield com/l7tech/policy/assertion/Assertion.assertionComment Lcom/l7tech/policy/assertion/Assertion$Comment;
      // 18: ifnonnull 42
      // 1b: aload 0
      // 1c: instanceof com/l7tech/policy/assertion/CustomAssertionHolder
      // 1f: ifeq 42
      // 22: goto 29
      // 25: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28: athrow
      // 29: aload 0
      // 2a: aload 2
      // 2b: getstatic com/l7tech/policy/assertion/Assertion.a [Ljava/lang/String;
      // 2e: bipush 11
      // 30: aaload
      // 31: aconst_null
      // 32: invokevirtual java/io/ObjectInputStream$GetField.get (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
      // 35: checkcast com/l7tech/policy/assertion/Assertion$Comment
      // 38: putfield com/l7tech/policy/assertion/Assertion.assertionComment Lcom/l7tech/policy/assertion/Assertion$Comment;
      // 3b: goto 42
      // 3e: invokestatic com/l7tech/policy/assertion/Assertion.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 41: athrow
      // 42: return
      // try (3 -> 17): 18 java/lang/ClassNotFoundException
      // try (14 -> 29): 30 java/lang/ClassNotFoundException
   }

   public void lock() {
      this.locked = true;
   }

   @Transient
   protected boolean isLocked() {
      return this.locked;
   }

   protected void checkLocked() {
      try {
         if (this.isLocked()) {
            throw new IllegalStateException(a[17]);
         }
      } catch (RuntimeException var1) {
         throw b(var1);
      }
   }

   static {
      String[] var5 = new String[19];
      int var3 = 0;
      String var2 = "s{\u001a{=\u0011\n6}n /\f\b\u001aMh6)\u0017\f4PX?:\u0010\u0016r\n2(\u0010\u0000)Jr<5M\u001a{=\u0011\n6}n /\f\b\u001aMh6)\u0017\f4PX?:\u0010\u0016r!2(\u0010\u0000)Jr<5 \t:Mhs5\u0002\b>\u001e~=?\u0010E,Wo;{\u0007\n/\t\u0012(\u0010\u0000)Jr<5\u0010\u0012(\u0010\u0000)Jr<5C\u00067_h {\u000e5>\u0002\u0011.L~\u0000>\u0017+:S~\n2(\u0010\u0000)Jr<5Y\t\u0012(\u0010\u0000)Jr<5\u000765\u0002\u00077[\u007f\u00102(\u0010\u0000)Jr<5 \n6S~=/\u000b1:\u0010\u0000\u000b_x8:\u0004\u0000\u001b#4\u000f\f8GM27\n\u0001:Jt!\u001d\u000f\u0004<M]28\u0017\n)G\u000b1:\u0010\u0000\u000b_x8:\u0004\u0000bs6\u0016\u0016/\u001e~:/\u000b\u0000)\u001et%>\u0011\u00172Z~s6\u0006\u0011:\u00162s:\r\u0001{_m<2\u0007E8_w?2\r\u0002{Z~5:\u0016\t/s~':KLw\u001et!{\u000b\u0004-[;2{\u0013\u00109Rr0{\r\u00107Rz!\"C\u00064Ph')\u0016\u0006/Qi\u0015 >\u0017_6Q\u007f&7\u0002\u0017\u001aMh6)\u0017\f4Ph";
      int var4 = "s{\u001a{=\u0011\n6}n /\f\b\u001aMh6)\u0017\f4PX?:\u0010\u0016r\n2(\u0010\u0000)Jr<5M\u001a{=\u0011\n6}n /\f\b\u001aMh6)\u0017\f4PX?:\u0010\u0016r!2(\u0010\u0000)Jr<5 \t:Mhs5\u0002\b>\u001e~=?\u0010E,Wo;{\u0007\n/\t\u0012(\u0010\u0000)Jr<5\u0010\u0012(\u0010\u0000)Jr<5C\u00067_h {\u000e5>\u0002\u0011.L~\u0000>\u0017+:S~\n2(\u0010\u0000)Jr<5Y\t\u0012(\u0010\u0000)Jr<5\u000765\u0002\u00077[\u007f\u00102(\u0010\u0000)Jr<5 \n6S~=/\u000b1:\u0010\u0000\u000b_x8:\u0004\u0000\u001b#4\u000f\f8GM27\n\u0001:Jt!\u001d\u000f\u0004<M]28\u0017\n)G\u000b1:\u0010\u0000\u000b_x8:\u0004\u0000bs6\u0016\u0016/\u001e~:/\u000b\u0000)\u001et%>\u0011\u00172Z~s6\u0006\u0011:\u00162s:\r\u0001{_m<2\u0007E8_w?2\r\u0002{Z~5:\u0016\t/s~':KLw\u001et!{\u000b\u0004-[;2{\u0013\u00109Rr0{\r\u00107Rz!\"C\u00064Ph')\u0016\u0006/Qi\u0015 >\u0017_6Q\u007f&7\u0002\u0017\u001aMh6)\u0017\f4Ph"
         .length();
      char var1 = 2;
      int var8 = -1;

      label39:
      while (true) {
         byte var10000 = 56;
         String var10001 = var2.substring(++var8, var8 + var1);
         byte var10002 = -1;

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var8 += var1) >= var4) {
                     a = var5;

                     label26: {
                        try {
                           if (!Assertion.class.desiredAssertionStatus()) {
                              var10 = true;
                              break label26;
                           }
                        } catch (RuntimeException var6) {
                           throw b(var6);
                        }

                        var10 = false;
                     }

                     $assertionsDisabled = var10;
                     metadataCache = new ConcurrentHashMap<>();
                     return;
                  }

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

                  var2 = "V|KMr\f}`mABi\u001d}yrFHx\u001c}tnVFo\f4zs\u0007erIJ~\u0001s";
                  var4 = "V|KMr\f}`mABi\u001d}yrFHx\u001c}tnVFo\f4zs\u0007erIJ~\u0001s".length();
                  var1 = 30;
                  var8 = -1;
            }

            var10000 = 126;
            var10001 = var2.substring(++var8, var8 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 107;
            case 1 -> 99;
            case 2 -> 91;
            case 3 -> 93;
            case 4 -> 99;
            case 5 -> 6;
            default -> 35;
         });
      }

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

   public static class Comment implements Serializable, Cloneable {
      public static final String LEFT_COMMENT;
      public static final String RIGHT_COMMENT;
      private Map<String, String> properties = new TreeMap<>();
      static final long serialVersionUID = -4532971469696633178L;
      private static final String[] a;

      public void setComment(String param1, String 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 1
         // 01: ifnull 15
         // 04: aload 1
         // 05: invokevirtual java/lang/String.trim ()Ljava/lang/String;
         // 08: invokevirtual java/lang/String.isEmpty ()Z
         // 0b: ifeq 47
         // 0e: goto 15
         // 11: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 14: athrow
         // 15: aload 2
         // 16: ifnull 46
         // 19: goto 20
         // 1c: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 1f: athrow
         // 20: aload 0
         // 21: getfield com/l7tech/policy/assertion/Assertion$Comment.properties Ljava/util/Map;
         // 24: aload 2
         // 25: invokeinterface java/util/Map.containsKey (Ljava/lang/Object;)Z 2
         // 2a: ifeq 46
         // 2d: goto 34
         // 30: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 33: athrow
         // 34: aload 0
         // 35: getfield com/l7tech/policy/assertion/Assertion$Comment.properties Ljava/util/Map;
         // 38: aload 2
         // 39: invokeinterface java/util/Map.remove (Ljava/lang/Object;)Ljava/lang/Object; 2
         // 3e: pop
         // 3f: goto 46
         // 42: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 45: athrow
         // 46: return
         // 47: aload 0
         // 48: getfield com/l7tech/policy/assertion/Assertion$Comment.properties Ljava/util/Map;
         // 4b: aload 2
         // 4c: aload 1
         // 4d: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
         // 52: pop
         // 53: return
         // try (0 -> 6): 7 java/lang/RuntimeException
         // try (2 -> 11): 12 java/lang/RuntimeException
         // try (9 -> 19): 20 java/lang/RuntimeException
         // try (14 -> 27): 28 java/lang/RuntimeException
      }

      public String getAssertionComment(String var1) {
         return this.getProperties().get(var1);
      }

      public Map<String, String> getProperties() {
         return this.properties;
      }

      public void setProperties(Map<String, String> var1) {
         Assertion.Comment var10000;
         Map var10001;
         label16: {
            try {
               var10000 = this;
               if (TreeMap.class.equals(var1.getClass())) {
                  var10001 = var1;
                  break label16;
               }
            } catch (RuntimeException var2) {
               throw a(var2);
            }

            var10001 = new TreeMap(var1);
         }

         var10000.properties = var10001;
      }

      public boolean hasComment() {
         // $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: getfield com/l7tech/policy/assertion/Assertion$Comment.properties Ljava/util/Map;
         // 04: getstatic com/l7tech/policy/assertion/Assertion$Comment.a [Ljava/lang/String;
         // 07: astore 5
         // 09: aload 5
         // 0b: bipush 1
         // 0c: aaload
         // 0d: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
         // 12: checkcast java/lang/String
         // 15: astore 1
         // 16: aload 1
         // 17: ifnull 33
         // 1a: aload 1
         // 1b: invokevirtual java/lang/String.trim ()Ljava/lang/String;
         // 1e: invokevirtual java/lang/String.isEmpty ()Z
         // 21: ifne 33
         // 24: goto 2b
         // 27: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 2a: athrow
         // 2b: bipush 1
         // 2c: goto 34
         // 2f: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 32: athrow
         // 33: bipush 0
         // 34: istore 2
         // 35: aload 0
         // 36: getfield com/l7tech/policy/assertion/Assertion$Comment.properties Ljava/util/Map;
         // 39: getstatic com/l7tech/policy/assertion/Assertion$Comment.a [Ljava/lang/String;
         // 3c: bipush 2
         // 3d: aaload
         // 3e: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
         // 43: checkcast java/lang/String
         // 46: astore 3
         // 47: aload 3
         // 48: ifnull 64
         // 4b: aload 3
         // 4c: invokevirtual java/lang/String.trim ()Ljava/lang/String;
         // 4f: invokevirtual java/lang/String.isEmpty ()Z
         // 52: ifne 64
         // 55: goto 5c
         // 58: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 5b: athrow
         // 5c: bipush 1
         // 5d: goto 65
         // 60: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 63: athrow
         // 64: bipush 0
         // 65: istore 4
         // 67: iload 2
         // 68: ifne 77
         // 6b: iload 4
         // 6d: ifeq 7f
         // 70: goto 77
         // 73: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 76: athrow
         // 77: bipush 1
         // 78: goto 80
         // 7b: invokestatic com/l7tech/policy/assertion/Assertion$Comment.a (Ljava/lang/Exception;)Ljava/lang/Exception;
         // 7e: athrow
         // 7f: bipush 0
         // 80: ireturn
         // try (10 -> 16): 17 java/lang/RuntimeException
         // try (12 -> 21): 21 java/lang/RuntimeException
         // try (33 -> 39): 40 java/lang/RuntimeException
         // try (35 -> 44): 44 java/lang/RuntimeException
         // try (48 -> 52): 53 java/lang/RuntimeException
         // try (50 -> 57): 57 java/lang/RuntimeException
      }

      public Assertion.Comment clone() throws CloneNotSupportedException {
         Assertion.Comment var1;
         try {
            var1 = (Assertion.Comment)super.clone();
         } catch (CloneNotSupportedException var4) {
            throw new RuntimeException(var4);
         }

         try {
            if (this.properties != null) {
               var1.properties = new HashMap<>(this.properties);
            }

            return var1;
         } catch (CloneNotSupportedException var3) {
            throw a(var3);
         }
      }

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

      static {
         String[] var5 = new String[4];
         int var3 = 0;
         String var2 = "\u0005F+KH\u001fH\u0018B!FRe\f\u001bJ*W2rD\u001aB)MH";
         int var4 = "\u0005F+KH\u001fH\u0018B!FRe\f\u001bJ*W2rD\u001aB)MH".length();
         char var1 = '\r';
         int var7 = -1;

         label24:
         while (true) {
            byte var10000 = 21;
            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) {
                        a = var5;
                        String[] var9 = a;
                        LEFT_COMMENT = a[3];
                        RIGHT_COMMENT = var9[0];
                        return;
                     }

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

                     var2 = "\u001f\\1QR\u0005R\u0002X;\\H\u007f\f\u0001P0M(h^\u0000X3WR";
                     var4 = "\u001f\\1QR\u0005R\u0002X;\\H\u007f\f\u0001P0M(h^\u0000X3WR".length();
                     var1 = '\r';
                     var7 = -1;
               }

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

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

         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 -> 66;
               case 1 -> 26;
               case 2 -> 121;
               case 3 -> 22;
               case 4 -> 9;
               case 5 -> 36;
               default -> 30;
            });
         }

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