package com.l7tech.xml.xpath;

import com.l7tech.util.DomUtils;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.xml.DomElementCursor;
import com.l7tech.xml.InvalidXpathException;
import com.l7tech.xml.SaxonUtils;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Logger;
import javax.xml.xpath.XPathExpressionException;
import net.sf.saxon.dom.DocumentWrapper;
import net.sf.saxon.dom.NodeWrapper;
import net.sf.saxon.om.NodeInfo;
import net.sf.saxon.s9api.QName;
import net.sf.saxon.s9api.SaxonApiException;
import net.sf.saxon.s9api.XPathCompiler;
import net.sf.saxon.s9api.XPathExecutable;
import net.sf.saxon.s9api.XPathSelector;
import net.sf.saxon.s9api.XdmAtomicValue;
import net.sf.saxon.s9api.XdmItem;
import net.sf.saxon.s9api.XdmNode;
import net.sf.saxon.s9api.XdmSequenceIterator;
import net.sf.saxon.s9api.XdmValue;
import org.jaxen.FunctionContext;
import org.jaxen.JaxenException;
import org.jaxen.XPathFunctionContext;
import org.jaxen.dom.DOMXPath;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class DomCompiledXpath extends CompiledXpath {
   private static final Logger f;
   private static final FunctionContext g;
   private final AtomicReference<DOMXPath> h;
   private final AtomicReference<XPathExecutable> i;
   private final AtomicBoolean j;
   private final AtomicBoolean k;
   private static final String[] m;

   public DomCompiledXpath(CompilableXpath param1) throws InvalidXpathException {
      // $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: invokevirtual com/l7tech/xml/xpath/CompilableXpath.getExpressionForJaxen ()Ljava/lang/String;
      // 05: aload 1
      // 06: invokevirtual com/l7tech/xml/xpath/CompilableXpath.getXpathVersion ()Lcom/l7tech/xml/xpath/XpathVersion;
      // 09: aload 1
      // 0a: invokevirtual com/l7tech/xml/xpath/CompilableXpath.getNamespaces ()Ljava/util/Map;
      // 0d: invokespecial com/l7tech/xml/xpath/CompiledXpath.<init> (Ljava/lang/String;Lcom/l7tech/xml/xpath/XpathVersion;Ljava/util/Map;)V
      // 10: aload 0
      // 11: new java/util/concurrent/atomic/AtomicReference
      // 14: dup
      // 15: invokespecial java/util/concurrent/atomic/AtomicReference.<init> ()V
      // 18: putfield com/l7tech/xml/xpath/DomCompiledXpath.h Ljava/util/concurrent/atomic/AtomicReference;
      // 1b: aload 0
      // 1c: new java/util/concurrent/atomic/AtomicReference
      // 1f: dup
      // 20: invokespecial java/util/concurrent/atomic/AtomicReference.<init> ()V
      // 23: putfield com/l7tech/xml/xpath/DomCompiledXpath.i Ljava/util/concurrent/atomic/AtomicReference;
      // 26: aload 0
      // 27: new java/util/concurrent/atomic/AtomicBoolean
      // 2a: dup
      // 2b: bipush 0
      // 2c: invokespecial java/util/concurrent/atomic/AtomicBoolean.<init> (Z)V
      // 2f: putfield com/l7tech/xml/xpath/DomCompiledXpath.j Ljava/util/concurrent/atomic/AtomicBoolean;
      // 32: aload 0
      // 33: new java/util/concurrent/atomic/AtomicBoolean
      // 36: dup
      // 37: bipush 0
      // 38: invokespecial java/util/concurrent/atomic/AtomicBoolean.<init> (Z)V
      // 3b: putfield com/l7tech/xml/xpath/DomCompiledXpath.k Ljava/util/concurrent/atomic/AtomicBoolean;
      // 3e: aload 0
      // 3f: getfield com/l7tech/xml/xpath/DomCompiledXpath.h Ljava/util/concurrent/atomic/AtomicReference;
      // 42: aload 0
      // 43: invokevirtual com/l7tech/xml/xpath/DomCompiledXpath.a ()Lorg/jaxen/dom/DOMXPath;
      // 46: invokevirtual java/util/concurrent/atomic/AtomicReference.set (Ljava/lang/Object;)V
      // 49: aload 0
      // 4a: getfield com/l7tech/xml/xpath/DomCompiledXpath.i Ljava/util/concurrent/atomic/AtomicReference;
      // 4d: aload 0
      // 4e: aload 0
      // 4f: getfield com/l7tech/xml/xpath/DomCompiledXpath.h Ljava/util/concurrent/atomic/AtomicReference;
      // 52: invokevirtual java/util/concurrent/atomic/AtomicReference.get ()Ljava/lang/Object;
      // 55: ifnonnull 5c
      // 58: bipush 1
      // 59: goto 5d
      // 5c: bipush 0
      // 5d: invokevirtual com/l7tech/xml/xpath/DomCompiledXpath.a (Z)Lnet/sf/saxon/s9api/XPathExecutable;
      // 60: invokevirtual java/util/concurrent/atomic/AtomicReference.set (Ljava/lang/Object;)V
      // 63: aload 0
      // 64: getfield com/l7tech/xml/xpath/DomCompiledXpath.h Ljava/util/concurrent/atomic/AtomicReference;
      // 67: invokevirtual java/util/concurrent/atomic/AtomicReference.get ()Ljava/lang/Object;
      // 6a: ifnonnull 8f
      // 6d: aload 0
      // 6e: getfield com/l7tech/xml/xpath/DomCompiledXpath.i Ljava/util/concurrent/atomic/AtomicReference;
      // 71: invokevirtual java/util/concurrent/atomic/AtomicReference.get ()Ljava/lang/Object;
      // 74: ifnonnull 8f
      // 77: goto 7e
      // 7a: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7d: athrow
      // 7e: new com/l7tech/xml/InvalidXpathException
      // 81: dup
      // 82: getstatic com/l7tech/xml/xpath/DomCompiledXpath.m [Ljava/lang/String;
      // 85: bipush 0
      // 86: aaload
      // 87: invokespecial com/l7tech/xml/InvalidXpathException.<init> (Ljava/lang/String;)V
      // 8a: athrow
      // 8b: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 8e: athrow
      // 8f: return
      // try (45 -> 55): 56 com/l7tech/xml/InvalidXpathException
      // try (51 -> 65): 65 com/l7tech/xml/InvalidXpathException
   }

   protected DOMXPath getDomXpath() throws InvalidXpathException {
      try {
         if (this.k.get()) {
            return null;
         }
      } catch (InvalidXpathException var5) {
         throw a(var5);
      }

      DOMXPath var1 = this.h.get();
      if (var1 == null) {
         synchronized (this) {
            var1 = this.h.get();
            if (var1 == null) {
               var1 = this.a();
               this.h.set(var1);
            }
         }
      }

      return var1;
   }

   private DOMXPath a() throws InvalidXpathException {
      try {
         if (!XpathVersion.XPATH_1_0.equals(this.getXpathVersion())) {
            this.k.set(true);
            return null;
         }
      } catch (InvalidXpathException var1) {
         throw a(var1);
      }

      return this.b();
   }

   private DOMXPath b() throws InvalidXpathException {
      String var1 = this.getExpression();
      Map var2 = this.getNamespaceMap();

      try {
         if (var1 == null) {
            throw new InvalidXpathException(m[4]);
         }
      } catch (JaxenException var10) {
         throw a(var10);
      }

      try {
         DOMXPath var3 = new DOMXPath(var1);
         var3.setFunctionContext(g);
         var3.setVariableContext(new XpathVariableFinderVariableContext(null));
         if (var2 != null) {
            for (Object var5 : var2.keySet()) {
               String var6 = (String)var5;
               String var7 = (String)var2.get(var6);
               var3.addNamespace(var6, var7);
            }
         }

         try {
            XpathVariableContext.doWithVariableFinder(new e(this), new i(this, var3));
         } catch (JaxenException var8) {
            throw var8;
         } catch (Exception var9) {
            throw ExceptionUtils.wrap(var9);
         }

         return var3;
      } catch (JaxenException var11) {
         throw new InvalidXpathException(var11);
      }
   }

   protected XPathExecutable getSaxonXpath() throws InvalidXpathException {
      try {
         if (this.j.get()) {
            return null;
         }
      } catch (InvalidXpathException var5) {
         throw a(var5);
      }

      XPathExecutable var1 = this.i.get();
      if (var1 == null) {
         synchronized (this) {
            var1 = this.i.get();
            if (var1 == null) {
               var1 = this.a(true);
               this.i.set(var1);
            }
         }
      }

      return var1;
   }

   private XPathExecutable a(boolean param1) throws InvalidXpathException {
      // $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: iload 1
      // 01: ifne 1e
      // 04: getstatic com/l7tech/xml/xpath/XpathVersion.XPATH_2_0 Lcom/l7tech/xml/xpath/XpathVersion;
      // 07: aload 0
      // 08: invokevirtual com/l7tech/xml/xpath/DomCompiledXpath.getXpathVersion ()Lcom/l7tech/xml/xpath/XpathVersion;
      // 0b: invokevirtual com/l7tech/xml/xpath/XpathVersion.equals (Ljava/lang/Object;)Z
      // 0e: ifne 1e
      // 11: goto 18
      // 14: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 17: athrow
      // 18: aconst_null
      // 19: areturn
      // 1a: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1d: athrow
      // 1e: aload 0
      // 1f: invokevirtual com/l7tech/xml/xpath/DomCompiledXpath.c ()Lnet/sf/saxon/s9api/XPathExecutable;
      // 22: areturn
      // 23: astore 2
      // 24: getstatic com/l7tech/xml/xpath/DomCompiledXpath.f Ljava/util/logging/Logger;
      // 27: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level;
      // 2a: aload 0
      // 2b: invokevirtual com/l7tech/xml/xpath/DomCompiledXpath.getExpression ()Ljava/lang/String;
      // 2e: getstatic com/l7tech/xml/xpath/DomCompiledXpath.m [Ljava/lang/String;
      // 31: bipush 11
      // 33: aaload
      // 34: swap
      // 35: 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" ]
      // 3a: aload 2
      // 3b: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 3e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 41: aload 0
      // 42: getfield com/l7tech/xml/xpath/DomCompiledXpath.j Ljava/util/concurrent/atomic/AtomicBoolean;
      // 45: bipush 1
      // 46: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set (Z)V
      // 49: iload 1
      // 4a: ifeq 5a
      // 4d: new com/l7tech/xml/InvalidXpathException
      // 50: dup
      // 51: aload 2
      // 52: invokespecial com/l7tech/xml/InvalidXpathException.<init> (Ljava/lang/Throwable;)V
      // 55: athrow
      // 56: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 59: athrow
      // 5a: aconst_null
      // 5b: areturn
      // try (2 -> 12): 12 com/l7tech/xml/InvalidXpathException
      // try (0 -> 7): 8 com/l7tech/xml/InvalidXpathException
      // try (14 -> 16): 17 com/l7tech/xml/InvalidXpathException
      // try (18 -> 41): 41 com/l7tech/xml/InvalidXpathException
   }

   private XPathExecutable c() throws InvalidXpathException {
      String var1 = this.getExpression();
      Map var2 = this.getNamespaceMap();

      try {
         if (var1 == null) {
            throw new InvalidXpathException(m[7]);
         }
      } catch (SaxonApiException var7) {
         throw a(var7);
      }

      XPathCompiler var3 = SaxonUtils.getProcessor().newXPathCompiler();
      if (var2 != null) {
         for (Entry var5 : var2.entrySet()) {
            var3.declareNamespace((String)var5.getKey(), (String)var5.getValue());
         }
      }

      var3.setAllowUndeclaredVariables(true);
      var3.setLanguageVersion(this.getXpathVersion().getVersionString());

      try {
         return var3.compile(var1);
      } catch (SaxonApiException var6) {
         throw new InvalidXpathException(ExceptionUtils.getMessage(var6), var6);
      }
   }

   public XpathResult getXpathResult(DomElementCursor var1, @Nullable XpathVariableFinder var2) throws XPathExpressionException {
      try {
         if (var2 == null) {
            return this.a(var1);
         }
      } catch (XPathExpressionException var6) {
         throw a(var6);
      }

      try {
         return XpathVariableContext.doWithVariableFinder(var2, new j(this, var1));
      } catch (XPathExpressionException var4) {
         throw var4;
      } catch (Exception var5) {
         throw new XPathExpressionException(var5);
      }
   }

   public List<Element> rawSelectElements(Document var1, @Nullable XpathVariableFinder var2) throws InvalidXpathException {
      try {
         if (this.i.get() != null) {
            return this.a(var1, var2);
         }
      } catch (InvalidXpathException var3) {
         throw a(var3);
      }

      return this.b(var1, var2);
   }

   private List<Element> a(Document var1, @Nullable XpathVariableFinder var2) throws InvalidXpathException {
      try {
         XPathExecutable var3 = this.getSaxonXpath();
         XPathSelector var4 = var3.load();
         var4.setURIResolver(new k(this));
         DocumentWrapper var5 = new DocumentWrapper(var1, "", SaxonUtils.getConfiguration());
         NodeWrapper var6 = var5.wrap(var1);
         XdmNode var7 = new XdmNode(var6);
         var4.setContextItem(var7);
         a(var3, var4, var2);
         XdmValue var8 = var4.evaluate();

         try {
            if (var8 == null || var8.size() == 0) {
               return Collections.emptyList();
            }
         } catch (InvalidXpathException var15) {
            throw a(var15);
         }

         ArrayList var9 = new ArrayList();
         XdmSequenceIterator var10 = var8.iterator();

         while (var10.hasNext()) {
            XdmItem var11 = var10.next();

            try {
               if (var11.isAtomicValue()) {
                  throw new InvalidXpathException(m[5]);
               }
            } catch (InvalidXpathException var14) {
               throw a(var14);
            }

            Node var12 = a(var11);
            if (!(var12 instanceof Element var13)) {
               throw new InvalidXpathException(m[3] + var12.getClass().getName());
            }

            var9.add(var13);
         }

         return var9;
      } catch (InvalidXpathException var16) {
         throw var16;
      } catch (Exception var17) {
         throw new InvalidXpathException(var17);
      }
   }

   private List<Element> b(Document var1, XpathVariableFinder var2) throws InvalidXpathException {
      try {
         return XpathVariableContext.doWithVariableFinder(var2, new l(this, var1));
      } catch (InvalidXpathException var4) {
         throw var4;
      } catch (Exception var5) {
         throw new InvalidXpathException(var5);
      }
   }

   private XpathResult a(DomElementCursor var1) throws XPathExpressionException {
      try {
         if (this.i.get() != null) {
            return this.b(var1);
         }
      } catch (XPathExpressionException var2) {
         throw a(var2);
      }

      return this.c(var1);
   }

   private XpathResult b(DomElementCursor var1) throws XPathExpressionException {
      try {
         XPathExecutable var2 = this.getSaxonXpath();
         XPathSelector var3 = var2.load();
         var3.setURIResolver(new m(this));
         Node var4 = var1.asDomNode();
         DocumentWrapper var5 = new DocumentWrapper(var1.asDomElement().getOwnerDocument(), "", SaxonUtils.getConfiguration());
         NodeWrapper var6 = var5.wrap(var4);
         XdmNode var7 = new XdmNode(var6);
         var3.setContextItem(var7);
         a(var2, var3, XpathVariableContext.getCurrentVariableFinder());
         XdmValue var8 = var3.evaluate();

         try {
            if (var8 == null || var8.size() == 0) {
               return XpathResult.RESULT_EMPTY;
            }
         } catch (InvalidXpathException var13) {
            throw a(var13);
         }

         XdmItem var9 = var8.itemAt(0);
         if (!var9.isAtomicValue()) {
            return new ab(this, var8);
         }

         XdmAtomicValue var10 = (XdmAtomicValue)var9;
         Object var11 = var10.getValue();
         byte var12;
         if (var11 instanceof Boolean) {
            var12 = 2;
         } else if (var11 instanceof Number) {
            var12 = 3;
         } else {
            var12 = 4;
         }

         return a(var8, var10, var12);
      } catch (InvalidXpathException | SaxonApiException var14) {
         throw new XPathExpressionException(var14);
      }
   }

   private static XpathResultValueIterator a(XdmValue var0) {
      return new q(var0);
   }

   private static XpathResultValueSet a(XdmValue var0, short var1) {
      return new r(var1, var0);
   }

   private static XpathResult a(XdmValue var0, XdmAtomicValue var1, short var2) {
      return new ad(var2, var1, var0);
   }

   private static Node a(XdmItem var0) {
      if (var0 instanceof XdmNode var2) {
         NodeInfo var3 = var2.getUnderlyingNode();
         if (var3 instanceof NodeWrapper var4) {
            Node var1 = (Node)var4.getUnderlyingNode();

            try {
               if (var1 == null) {
                  throw new IllegalStateException(m[13]);
               } else {
                  return var1;
               }
            } catch (IllegalStateException var6) {
               throw a(var6);
            }
         } else {
            String var10002 = var3.getClass().getName();
            String[] var5 = m;
            throw new IllegalStateException(var5[6] + var10002);
         }
      } else {
         throw new IllegalStateException(m[10] + var0.getClass().getName());
      }
   }

   private static void a(XPathExecutable var0, XPathSelector var1, @Nullable XpathVariableFinder var2) throws SaxonApiException, XPathExpressionException {
      try {
         if (var2 == null) {
            return;
         }
      } catch (NoSuchXpathVariableException var8) {
         throw a(var8);
      }

      Iterator var3 = var0.iterateExternalVariables();

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

         try {
            Object var5 = var2.getVariableValue(var4.getNamespaceURI(), var4.getLocalName());
            XdmValue var6 = a(var5);
            var1.setVariable(var4, var6);
         } catch (NoSuchXpathVariableException var7) {
            throw (XPathExpressionException)new XPathExpressionException(m[2] + var4).initCause(var7);
         }
      }
   }

   private static XdmValue a(Object var0) throws NoSuchXpathVariableException {
      Object var1;
      if (var0 instanceof XdmValue) {
         var1 = (XdmValue)var0;
      } else {
         try {
            if (var0 == null) {
               throw new NoSuchXpathVariableException(m[12]);
            }
         } catch (NoSuchXpathVariableException var8) {
            throw a(var8);
         }

         if (var0 instanceof Boolean) {
            var1 = new XdmAtomicValue((Boolean)var0);
         } else if (var0 instanceof CharSequence) {
            var1 = new XdmAtomicValue(((CharSequence)var0).toString());
         } else if (var0 instanceof Long) {
            var1 = new XdmAtomicValue((Long)var0);
         } else if (var0 instanceof Integer) {
            var1 = new XdmAtomicValue(((Integer)var0).intValue());
         } else if (var0 instanceof Double) {
            var1 = new XdmAtomicValue((Double)var0);
         } else if (var0 instanceof BigDecimal) {
            var1 = new XdmAtomicValue((BigDecimal)var0);
         } else if (var0 instanceof BigInteger var2) {
            var1 = new XdmAtomicValue(new BigDecimal(var2));
         } else if (var0 instanceof Float) {
            var1 = new XdmAtomicValue((Float)var0);
         } else if (var0 instanceof URI) {
            var1 = new XdmAtomicValue((URI)var0);
         } else if (var0 instanceof QName) {
            var1 = new XdmAtomicValue((QName)var0);
         } else if (var0 instanceof Iterable) {
            ArrayList var9 = new ArrayList();

            for (Object var4 : (Iterable)var0) {
               XdmValue var5 = a(var4);
               if (!(var5 instanceof XdmItem var6)) {
                  String var10002 = var5.getClass().getName();
                  String[] var7 = m;
                  throw new NoSuchXpathVariableException(var7[8] + var10002);
               }

               var9.add(var6);
            }

            var1 = new XdmValue(var9);
         } else {
            if (!(var0 instanceof Node var10)) {
               throw new NoSuchXpathVariableException(m[1] + var0.getClass().getName());
            }

            var1 = new XdmNode(new DocumentWrapper(DomUtils.getOwnerDocument(var10), "", SaxonUtils.getConfiguration()));
         }
      }

      return (XdmValue)var1;
   }

   private XpathResult c(DomElementCursor param1) throws XPathExpressionException {
      // $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: invokevirtual com/l7tech/xml/xpath/DomCompiledXpath.getDomXpath ()Lorg/jaxen/dom/DOMXPath;
      // 04: astore 2
      // 05: aload 2
      // 06: aload 1
      // 07: invokevirtual com/l7tech/xml/DomElementCursor.asDomNode ()Lorg/w3c/dom/Node;
      // 0a: invokevirtual org/jaxen/dom/DOMXPath.selectNodes (Ljava/lang/Object;)Ljava/util/List;
      // 0d: astore 3
      // 0e: goto 35
      // 11: astore 4
      // 13: new javax/xml/xpath/XPathExpressionException
      // 16: dup
      // 17: aload 4
      // 19: invokespecial javax/xml/xpath/XPathExpressionException.<init> (Ljava/lang/Throwable;)V
      // 1c: athrow
      // 1d: astore 4
      // 1f: new javax/xml/xpath/XPathExpressionException
      // 22: dup
      // 23: aload 4
      // 25: invokespecial javax/xml/xpath/XPathExpressionException.<init> (Ljava/lang/Throwable;)V
      // 28: athrow
      // 29: astore 4
      // 2b: new java/lang/RuntimeException
      // 2e: dup
      // 2f: aload 4
      // 31: invokespecial java/lang/RuntimeException.<init> (Ljava/lang/Throwable;)V
      // 34: athrow
      // 35: aload 3
      // 36: ifnull 4a
      // 39: aload 3
      // 3a: invokeinterface java/util/List.size ()I 1
      // 3f: bipush 1
      // 40: if_icmpge 52
      // 43: goto 4a
      // 46: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 49: athrow
      // 4a: getstatic com/l7tech/xml/xpath/XpathResult.RESULT_EMPTY Lcom/l7tech/xml/xpath/XpathResult;
      // 4d: areturn
      // 4e: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 51: athrow
      // 52: aload 3
      // 53: bipush 0
      // 54: invokeinterface java/util/List.get (I)Ljava/lang/Object; 2
      // 59: astore 4
      // 5b: aload 4
      // 5d: instanceof java/lang/Boolean
      // 60: ifeq 75
      // 63: aload 4
      // 65: checkcast java/lang/Boolean
      // 68: astore 5
      // 6a: new com/l7tech/xml/xpath/x
      // 6d: dup
      // 6e: aload 0
      // 6f: aload 5
      // 71: invokespecial com/l7tech/xml/xpath/x.<init> (Lcom/l7tech/xml/xpath/DomCompiledXpath;Ljava/lang/Boolean;)V
      // 74: areturn
      // 75: aload 4
      // 77: instanceof java/lang/Number
      // 7a: ifeq 8f
      // 7d: aload 4
      // 7f: checkcast java/lang/Number
      // 82: astore 5
      // 84: new com/l7tech/xml/xpath/y
      // 87: dup
      // 88: aload 0
      // 89: aload 5
      // 8b: invokespecial com/l7tech/xml/xpath/y.<init> (Lcom/l7tech/xml/xpath/DomCompiledXpath;Ljava/lang/Number;)V
      // 8e: areturn
      // 8f: aload 4
      // 91: instanceof java/lang/String
      // 94: ifeq a9
      // 97: aload 4
      // 99: checkcast java/lang/String
      // 9c: astore 5
      // 9e: new com/l7tech/xml/xpath/z
      // a1: dup
      // a2: aload 0
      // a3: aload 5
      // a5: invokespecial com/l7tech/xml/xpath/z.<init> (Lcom/l7tech/xml/xpath/DomCompiledXpath;Ljava/lang/String;)V
      // a8: areturn
      // a9: aload 4
      // ab: instanceof org/w3c/dom/Node
      // ae: ifne d1
      // b1: new javax/xml/xpath/XPathExpressionException
      // b4: dup
      // b5: aload 4
      // b7: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // ba: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // bd: getstatic com/l7tech/xml/xpath/DomCompiledXpath.m [Ljava/lang/String;
      // c0: bipush 9
      // c2: aaload
      // c3: swap
      // c4: 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" ]
      // c9: invokespecial javax/xml/xpath/XPathExpressionException.<init> (Ljava/lang/String;)V
      // cc: athrow
      // cd: invokestatic com/l7tech/xml/xpath/DomCompiledXpath.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // d0: athrow
      // d1: new com/l7tech/xml/xpath/aa
      // d4: dup
      // d5: aload 0
      // d6: aload 3
      // d7: invokespecial com/l7tech/xml/xpath/aa.<init> (Lcom/l7tech/xml/xpath/DomCompiledXpath;Ljava/util/List;)V
      // da: areturn
      // try (0 -> 8): 9 org/jaxen/JaxenException
      // try (0 -> 8): 15 java/lang/RuntimeException
      // try (0 -> 8): 21 com/l7tech/xml/InvalidXpathException
      // try (27 -> 33): 34 org/jaxen/JaxenException
      // try (29 -> 38): 38 org/jaxen/JaxenException
      // try (80 -> 95): 95 org/jaxen/JaxenException
   }

   static {
      String[] var5 = new String[14];
      int var3 = 0;
      String var2 = "cuaSY~f^WsN^00ZKd\b^,0H\\nSP&0UJt\u0007B+`KJrST:0Y\\ F_'0ZSaN]?rW@ \u007fa?dS\u0005pU^=uHVoU2cUaSY~fZWiFS2u\u0001\u0005NBB*u_\u0005vF]+u\u001bMaT\u0011+~HPpW^,d^A SH.u\u001b\u0018nKkI^)~\u001b}PFE60MDrNP<|^\u001f /cuaSY~b^VuKE~yUFlRU;t\u001bKoI\u001c\u001b|^HeIE~~TAe\u0007E'`^\u0005oA\u0011\u001euJ BI.b^VsN^00RV DD,b^KtKH~c^Q5cuaSY~uMDlRP*yTK UT-eWQeC\u00117~\u001bKoI\u001c\u001b|^HeIE~qOJmNR~fZIuBVhDxH_~hKDtO\u0011,uHPlS\u00110\u007f_@sBE~yUFlRU;t\u001b}dJ\u007f1t^\u0005cH_*qRKiIV~~TK-i^:ulWaWA;b\u001bJbMT=d\u001bJf\u0007E'`^\u0005\u001euJ BI.b^VsN^00RV DD,b^KtKH~c^Q2cUaSY~fZWiFS2u\u0001\u0005NBB*u_\u0005vF]+u\u001bMaT\u0011+~HPpW^,d^A SH.u\u001b+cuaSY~uMDlRP*yTK UT*eIKeC\u0011+~HPpW^,d^A SH.u\u001b?hDxH_~hKDtO\u0011,uHPlS\u00110\u007f_@sBE~yUFlRU;t\u001bKoI\u001c\u0006tVkoCT~\u007fYOeDE~\u007f]\u0005t^A;0$hDxH_~cNUpHC*0NKaQP7|ZGlB\u00118\u007fI\u0005xWP*x\u001b";
      int var4 = "cuaSY~f^WsN^00ZKd\b^,0H\\nSP&0UJt\u0007B+`KJrST:0Y\\ F_'0ZSaN]?rW@ \u007fa?dS\u0005pU^=uHVoU2cUaSY~fZWiFS2u\u0001\u0005NBB*u_\u0005vF]+u\u001bMaT\u0011+~HPpW^,d^A SH.u\u001b\u0018nKkI^)~\u001b}PFE60MDrNP<|^\u001f /cuaSY~b^VuKE~yUFlRU;t\u001bKoI\u001c\u001b|^HeIE~~TAe\u0007E'`^\u0005oA\u0011\u001euJ BI.b^VsN^00RV DD,b^KtKH~c^Q5cuaSY~uMDlRP*yTK UT-eWQeC\u00117~\u001bKoI\u001c\u001b|^HeIE~qOJmNR~fZIuBVhDxH_~hKDtO\u0011,uHPlS\u00110\u007f_@sBE~yUFlRU;t\u001b}dJ\u007f1t^\u0005cH_*qRKiIV~~TK-i^:ulWaWA;b\u001bJbMT=d\u001bJf\u0007E'`^\u0005\u001euJ BI.b^VsN^00RV DD,b^KtKH~c^Q2cUaSY~fZWiFS2u\u0001\u0005NBB*u_\u0005vF]+u\u001bMaT\u0011+~HPpW^,d^A SH.u\u001b+cuaSY~uMDlRP*yTK UT*eIKeC\u0011+~HPpW^,d^A SH.u\u001b?hDxH_~hKDtO\u0011,uHPlS\u00110\u007f_@sBE~yUFlRU;t\u001bKoI\u001c\u0006tVkoCT~\u007fYOeDE~\u007f]\u0005t^A;0$hDxH_~cNUpHC*0NKaQP7|ZGlB\u00118\u007fI\u0005xWP*x\u001b"
         .length();
      char var1 = 'J';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     m = var5;
                     f = Logger.getLogger(DomCompiledXpath.class.getName());
                     g = new XPathFunctionContext(false);
                     return;
                  }

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

                  var2 = "GqEw}ZB~sMbw\u0016Q?iEp5\u0014Asm\u0004ut\u0016Az8L`\\l{ZLo`Pk5\bQltHw5\u0013Z|mQgp\u001e\u0014Qn@fB\bUoqAq5\r]ki\u0004b5\u0014Asm\u0004mz\u001eQ";
                  var4 = "GqEw}ZB~sMbw\u0016Q?iEp5\u0014Asm\u0004ut\u0016Az8L`\\l{ZLo`Pk5\bQltHw5\u0013Z|mQgp\u001e\u0014Qn@fB\bUoqAq5\r]ki\u0004b5\u0014Asm\u0004mz\u001eQ"
                     .length();
                  var1 = 29;
                  var7 = -1;
            }

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

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

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

      return var10000;
   }

   private static String b(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 -> 45;
            case 1 -> 51;
            case 2 -> 22;
            case 3 -> 49;
            case 4 -> 39;
            case 5 -> 72;
            default -> 6;
         });
      }

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