package com.l7tech.server.service;

import com.l7tech.gateway.common.cluster.ServiceUsage;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.gateway.common.service.ServiceStatistics;
import com.l7tech.message.Message;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.imp.PersistentEntityUtil;
import com.l7tech.policy.Policy;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.cluster.ClusterInfoManager;
import com.l7tech.server.cluster.ServiceUsageManager;
import com.l7tech.server.event.PolicyCacheEvent;
import com.l7tech.server.event.system.ServiceCacheEvent;
import com.l7tech.server.event.system.Started;
import com.l7tech.server.policy.PolicyCache;
import com.l7tech.server.policy.PolicyMetadata;
import com.l7tech.server.policy.ServerPolicyException;
import com.l7tech.server.policy.ServerPolicyHandle;
import com.l7tech.server.service.resolution.ServiceResolutionException;
import com.l7tech.server.service.resolution.ServiceResolutionHelper;
import com.l7tech.server.service.resolution.ServiceResolutionManager;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Pair;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;

public class ServiceCache extends ApplicationObjectSupport implements InitializingBean, DisposableBean, PostStartupApplicationListener, ServiceCacheResolver {
   private static final Logger a;
   public static final long INTEGRITY_CHECK_FREQUENCY = 4000L;
   private final Map<Goid, PublishedService> b = new HashMap<>();
   private final ConcurrentMap<Goid, ServiceStatistics> c = new ConcurrentHashMap<>();
   private final Map<Goid, String> d = new HashMap<>();
   private final Set<Goid> e = new HashSet<>();
   private final PlatformTransactionManager f;
   private final ServiceManager g;
   private final ServiceUsageManager h;
   private final ClusterInfoManager i;
   private final ExecutorService j = Executors.newSingleThreadExecutor();
   private final Timer k;
   private final ReadWriteLock l = ServiceAndPolicyCacheSharedLock.getLock();
   private boolean m = false;
   private Auditor n;
   private Goid o = null;
   private final PolicyCache p;
   private final ServiceResolutionManager q;
   private final AtomicBoolean r = new AtomicBoolean(true);
   private static final String[] s;

   public ServiceCache(
      PolicyCache var1,
      PlatformTransactionManager var2,
      ServiceManager var3,
      ServiceUsageManager var4,
      ServiceResolutionManager var5,
      ClusterInfoManager var6,
      Timer var7
   ) {
      if (var1 == null) {
         String[] var8 = s;
         throw new IllegalArgumentException(var8[40]);
      }

      if (var7 == null) {
         var7 = new Timer(s[34], true);
      }

      this.p = var1;
      this.q = var5;
      this.k = var7;
      this.f = var2;
      this.g = var3;
      this.h = var4;
      this.i = var6;
      this.q.setServiceResolutionHelper(new ServiceResolutionHelper(this.b));
   }

   @ManagedOperation(description = "Check Cache Integrity")
   public synchronized void initiateIntegrityCheckProcess() {
      if (!this.m) {
         ServiceCache var1 = this;
         ar var2 = new ar(this, var1);
         this.k.schedule(var2, 4000L, 4000L);
         this.m = true;
      }
   }

   @Override
   public void onApplicationEvent(ApplicationEvent var1) {
      try {
         if (var1 instanceof ServiceCacheEvent.Updated) {
            this.a((ServiceCacheEvent.Updated)var1);
            this.r.set(true);
            return;
         }
      } catch (IllegalArgumentException var20) {
         throw a(var20);
      }

      try {
         if (var1 instanceof ServiceCacheEvent.Deleted) {
            this.a((ServiceCacheEvent.Deleted)var1);
            this.r.set(true);
            return;
         }
      } catch (IllegalArgumentException var19) {
         throw a(var19);
      }

      if (var1 instanceof PolicyCacheEvent.Invalid var2) {
         Lock var3 = this.l.writeLock();
         var3.lock();

         try {
            this.a(null, var2.getPolicyId(), var2.getException());
         } finally {
            var3.unlock();
         }

         this.r.set(true);
      } else if (var1 instanceof PolicyCacheEvent.Updated var21) {
         Lock var22 = this.l.writeLock();
         var22.lock();

         try {
            this.a(var21.getPolicy());
         } finally {
            var22.unlock();
         }

         this.r.set(true);
      } else {
         try {
            if (var1 instanceof Started) {
               new TransactionTemplate(this.f).execute(new aw(this));
               this.r.set(true);
            }
         } catch (IllegalArgumentException var18) {
            throw a(var18);
         }
      }
   }

   private void a(ServiceCacheEvent.Deleted var1) {
      TransactionSynchronizationManager.registerSynchronization(new ay(this, var1));
   }

   private void a(ServiceCacheEvent.Updated var1) {
      TransactionSynchronizationManager.registerSynchronization(new az(this, var1));
   }

   private void a(Goid var1) {
      PublishedService var2;
      try {
         var2 = (PublishedService)this.g.findByPrimaryKey(var1);
      } catch (FindException var6) {
         var2 = null;
         String[] var4 = s;
         a.log(Level.WARNING, var4[22], var6);
      }

      if (var2 != null) {
         try {
            PersistentEntityUtil.lock(var2);
            PersistentEntityUtil.lock(var2.getPolicy());
            this.cache(var2);
         } catch (Exception var5) {
            a.log(Level.WARNING, s[14] + ExceptionUtils.getMessage(var5), var5);
         }
      }
   }

   protected void initializeServiceCache() throws ObjectModelException {
      try {
         label70: {
            try {
               if (this.size() > 0) {
                  a.finest(s[29]);
                  break label70;
               }
            } catch (ServerPolicyException var16) {
               throw a(var16);
            }

            String[] var11 = s;
            a.info(var11[13]);
            long var1 = System.currentTimeMillis();

            for (PublishedService var5 : this.g.findAll()) {
               try {
                  this.cache(new PublishedService(var5, true));
               } catch (ServerPolicyException var14) {
                  Assertion var18 = var14.getAssertion();

                  String var10000;
                  label54: {
                     try {
                        if (var18 == null) {
                           var10000 = "";
                           break label54;
                        }
                     } catch (ServerPolicyException var13) {
                        throw a(var13);
                     }

                     var10000 = "#" + Integer.toString(var18.getOrdinal());
                  }

                  String var8 = var10000;

                  label46: {
                     try {
                        if (var18 == null) {
                           var10000 = s[7];
                           break label46;
                        }
                     } catch (ServerPolicyException var12) {
                        throw a(var12);
                     }

                     var10000 = "(" + var18.getClass().getSimpleName() + ")";
                  }

                  String var9 = var10000;
                  var11 = s;
                  String var10 = MessageFormat.format(var11[31], var5.getGoid(), var5.getName(), var8, var9);
                  a.log(Level.WARNING, var10, var14);
               } catch (Exception var15) {
                  var11 = s;
                  String var7 = MessageFormat.format(var11[38], var5.getGoid(), var5.getName());
                  a.log(Level.WARNING, var7, var15);
               }
            }

            Logger var24 = a;
            long var10001 = System.currentTimeMillis() - var1;
            var11 = s;
            var24.info(var11[15] + var10001 + var11[12]);
         }

         String[] var22 = s;
         a.info(var22[27]);
         this.initiateIntegrityCheckProcess();
      } catch (Exception var17) {
         throw new ObjectModelException(s[21], var17);
      }
   }

   private void a() throws ObjectModelException {
      try {
         Collection var1 = this.g.findAll();
         HashSet var2 = new HashSet(var1.size());

         for (PublishedService var4 : var1) {
            var2.add(var4.getGoid());
         }

         ServiceUsage[] var11 = this.h.findByNode(this.i.thisNodeId());

         for (ServiceUsage var7 : var11) {
            Goid var8 = var7.getServiceid();
            if (var2.contains(var8)) {
               ServiceStatistics var9 = new ServiceStatistics(var7.getServiceid(), var7.getRequests(), var7.getAuthorized(), var7.getCompleted());
               this.c.put(var9.getServiceGoid(), var9);
            }
         }
      } catch (FindException var10) {
         throw new ObjectModelException(s[17], var10);
      }
   }

   public int size() {
      this.l.readLock().lock();

      try {
         return this.b.size();
      } finally {
         this.l.readLock().unlock();
      }
   }

   private Map<Goid, Integer> b() {
      HashMap var1 = new HashMap();

      for (PublishedService var3 : this.b.values()) {
         var1.put(var3.getGoid(), var3.getVersion());
      }

      return var1;
   }

   public ServerPolicyHandle getServerPolicy(Goid var1) {
      this.l.readLock().lock();

      try {
         PublishedService var2 = this.b.get(var1);
         return var2 == null ? null : this.b(var2);
      } finally {
         this.l.readLock().unlock();
      }
   }

   @Override
   public PublishedService resolve(Message param1, ServiceCache.ResolutionListener param2) throws ServiceResolutionException {
      // $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/server/service/ServiceCache.l Ljava/util/concurrent/locks/ReadWriteLock;
      // 04: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 09: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 0e: aload 0
      // 0f: getfield com/l7tech/server/service/ServiceCache.b Ljava/util/Map;
      // 12: invokeinterface java/util/Map.values ()Ljava/util/Collection; 1
      // 17: invokestatic java/util/Collections.unmodifiableCollection (Ljava/util/Collection;)Ljava/util/Collection;
      // 1a: astore 3
      // 1b: aload 0
      // 1c: aload 1
      // 1d: aload 2
      // 1e: aload 3
      // 1f: invokevirtual com/l7tech/server/service/ServiceCache.a (Lcom/l7tech/message/Message;Lcom/l7tech/server/service/ServiceCache$ResolutionListener;Ljava/util/Collection;)Lcom/l7tech/gateway/common/service/PublishedService;
      // 22: astore 4
      // 24: aload 4
      // 26: ifnonnull 91
      // 29: aload 2
      // 2a: invokeinterface com/l7tech/server/service/ServiceCache$ResolutionListener.notifyResolveCatchAll ()Z 1
      // 2f: ifeq 91
      // 32: goto 39
      // 35: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 38: athrow
      // 39: aload 0
      // 3a: getfield com/l7tech/server/service/ServiceCache.o Lcom/l7tech/objectmodel/Goid;
      // 3d: ifnull 91
      // 40: goto 47
      // 43: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 46: athrow
      // 47: aload 1
      // 48: invokestatic com/l7tech/server/service/resolution/UriResolver.canResolveByURI (Lcom/l7tech/message/Message;)Z
      // 4b: ifeq 91
      // 4e: goto 55
      // 51: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 54: athrow
      // 55: aload 0
      // 56: getfield com/l7tech/server/service/ServiceCache.b Ljava/util/Map;
      // 59: aload 0
      // 5a: getfield com/l7tech/server/service/ServiceCache.o Lcom/l7tech/objectmodel/Goid;
      // 5d: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 62: checkcast com/l7tech/gateway/common/service/PublishedService
      // 65: astore 4
      // 67: aload 4
      // 69: ifnull 91
      // 6c: aload 0
      // 6d: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 70: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SERVICE_CACHE_RESOLVED_CATCHALL Lcom/l7tech/gateway/common/audit/Messages$M;
      // 73: bipush 2
      // 74: anewarray 836
      // 77: dup
      // 78: bipush 0
      // 79: aload 4
      // 7b: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 7e: aastore
      // 7f: dup
      // 80: bipush 1
      // 81: aload 4
      // 83: invokevirtual com/l7tech/gateway/common/service/PublishedService.getId ()Ljava/lang/String;
      // 86: aastore
      // 87: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 8a: goto 91
      // 8d: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 90: athrow
      // 91: aload 4
      // 93: astore 5
      // 95: aload 0
      // 96: getfield com/l7tech/server/service/ServiceCache.l Ljava/util/concurrent/locks/ReadWriteLock;
      // 99: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 9e: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // a3: aload 5
      // a5: areturn
      // a6: astore 6
      // a8: aload 0
      // a9: getfield com/l7tech/server/service/ServiceCache.l Ljava/util/concurrent/locks/ReadWriteLock;
      // ac: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // b1: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // b6: aload 6
      // b8: athrow
      // try (42 -> 60): 61 com/l7tech/server/service/resolution/ServiceResolutionException
      // try (23 -> 32): 33 com/l7tech/server/service/resolution/ServiceResolutionException
      // try (17 -> 26): 27 com/l7tech/server/service/resolution/ServiceResolutionException
      // try (15 -> 20): 21 com/l7tech/server/service/resolution/ServiceResolutionException
      // try (4 -> 65): 71 null
      // try (71 -> 72): 71 null
   }

   public Collection<PublishedService> resolve(@Nullable String var1, @Nullable String var2, @Nullable String var3) throws ServiceResolutionException {
      this.l.readLock().lock();

      try {
         Collection var4 = Collections.unmodifiableCollection(this.b.values());
         return this.q.resolve(var1, var2, var3, var4);
      } finally {
         this.l.readLock().unlock();
      }
   }

   @Override
   public void checkResolution(PublishedService var1) throws ServiceResolutionException {
      this.l.readLock().lock();

      try {
         Collection var2 = Collections.unmodifiableCollection(this.b.values());
         this.q.checkResolution(var1, var2);
      } finally {
         this.l.readLock().unlock();
      }
   }

   private PublishedService a(Message var1, ServiceCache.ResolutionListener var2, Collection<PublishedService> var3) throws ServiceResolutionException {
      return this.q.resolve(this.n, var1, new v(this, var2), var3);
   }

   private Set<ServiceCache.ServiceMetadata> a(Collection<PublishedService> var1) {
      Set var2;
      if (var1.isEmpty()) {
         var2 = Collections.emptySet();
      } else if (var1.size() == 1) {
         var2 = Collections.singleton(this.a((PublishedService)var1.iterator().next()));
      } else {
         var2 = new LinkedHashSet();

         for (PublishedService var4 : var1) {
            var2.add(this.a(var4));
         }
      }

      return var2;
   }

   private ServiceCache.ServiceMetadata a(PublishedService 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: aconst_null
      // 01: astore 2
      // 02: aload 1
      // 03: invokevirtual com/l7tech/gateway/common/service/PublishedService.getPolicy ()Lcom/l7tech/policy/Policy;
      // 06: astore 3
      // 07: aload 3
      // 08: ifnull 16
      // 0b: aload 0
      // 0c: getfield com/l7tech/server/service/ServiceCache.p Lcom/l7tech/server/policy/PolicyCache;
      // 0f: aload 3
      // 10: invokeinterface com/l7tech/server/policy/PolicyCache.getPolicyMetadata (Lcom/l7tech/policy/Policy;)Lcom/l7tech/server/policy/PolicyMetadata; 2
      // 15: astore 2
      // 16: aload 2
      // 17: ifnonnull 42
      // 1a: aload 3
      // 1b: ifnonnull 2d
      // 1e: goto 25
      // 21: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 24: athrow
      // 25: aconst_null
      // 26: goto 35
      // 29: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2c: athrow
      // 2d: new com/l7tech/policy/PolicyHeader
      // 30: dup
      // 31: aload 3
      // 32: invokespecial com/l7tech/policy/PolicyHeader.<init> (Lcom/l7tech/policy/Policy;)V
      // 35: astore 4
      // 37: new com/l7tech/server/service/w
      // 3a: dup
      // 3b: aload 0
      // 3c: aload 4
      // 3e: invokespecial com/l7tech/server/service/w.<init> (Lcom/l7tech/server/service/ServiceCache;Lcom/l7tech/policy/PolicyHeader;)V
      // 41: astore 2
      // 42: new com/l7tech/server/service/ServiceCache$ServiceMetadata
      // 45: dup
      // 46: aload 2
      // 47: aload 1
      // 48: invokevirtual com/l7tech/gateway/common/service/PublishedService.isWssProcessingEnabled ()Z
      // 4b: invokespecial com/l7tech/server/service/ServiceCache$ServiceMetadata.<init> (Lcom/l7tech/server/policy/PolicyMetadata;Z)V
      // 4e: areturn
      // try (12 -> 16): 17 java/lang/IllegalArgumentException
      // try (14 -> 21): 21 java/lang/IllegalArgumentException
   }

   public void cache(PublishedService var1) throws ServerPolicyException {
      LinkedList var2 = new LinkedList();
      this.l.writeLock().lock();

      try {
         this.a(var1, var2);
         this.d();
      } finally {
         this.l.writeLock().unlock();
      }

      try {
         if (!var2.isEmpty()) {
            this.a(var2);
         }
      } catch (ServerPolicyException var6) {
         throw a(var6);
      }
   }

   private void a(List<Pair<Goid, ServiceCache.CachedServiceNotificationType>> var1) {
      this.j.execute(new x(this, var1));
   }

   private void a(List<Goid> 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: ifnull 14
      // 04: aload 1
      // 05: invokeinterface java/util/List.isEmpty ()Z 1
      // 0a: ifeq 19
      // 0d: goto 14
      // 10: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 13: athrow
      // 14: return
      // 15: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 18: athrow
      // 19: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 1c: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level;
      // 1f: iload 2
      // 20: ifeq 2f
      // 23: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 26: bipush 4
      // 27: aaload
      // 28: goto 35
      // 2b: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2e: athrow
      // 2f: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 32: bipush 8
      // 34: aaload
      // 35: aload 1
      // 36: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 39: 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" ]
      // 3e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 41: aload 0
      // 42: invokevirtual com/l7tech/server/service/ServiceCache.getApplicationContext ()Lorg/springframework/context/ApplicationContext;
      // 45: new com/l7tech/server/event/ServiceEnablementEvent
      // 48: dup
      // 49: aload 0
      // 4a: aload 1
      // 4b: aload 1
      // 4c: invokeinterface java/util/List.size ()I 1
      // 51: anewarray 353
      // 54: invokeinterface java/util/List.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2
      // 59: checkcast [Lcom/l7tech/objectmodel/Goid;
      // 5c: iload 2
      // 5d: invokespecial com/l7tech/server/event/ServiceEnablementEvent.<init> (Ljava/lang/Object;[Lcom/l7tech/objectmodel/Goid;Z)V
      // 60: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 65: return
      // try (0 -> 5): 6 java/lang/IllegalArgumentException
      // try (2 -> 9): 9 java/lang/IllegalArgumentException
      // try (11 -> 19): 19 java/lang/IllegalArgumentException
   }

   private void a(PublishedService param1, List<Pair<Goid, ServiceCache.CachedServiceNotificationType>> param2) throws ServerPolicyException {
      // $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 1
      // 001: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 004: astore 3
      // 005: aload 0
      // 006: getfield com/l7tech/server/service/ServiceCache.b Ljava/util/Map;
      // 009: aload 3
      // 00a: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 00f: checkcast com/l7tech/gateway/common/service/PublishedService
      // 012: astore 4
      // 014: aload 4
      // 016: ifnonnull 01f
      // 019: bipush 0
      // 01a: istore 5
      // 01c: goto 080
      // 01f: bipush 1
      // 020: istore 5
      // 022: aload 4
      // 024: invokevirtual com/l7tech/gateway/common/service/PublishedService.isDisabled ()Z
      // 027: ifeq 051
      // 02a: aload 1
      // 02b: invokevirtual com/l7tech/gateway/common/service/PublishedService.isDisabled ()Z
      // 02e: ifne 051
      // 031: goto 038
      // 034: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 037: athrow
      // 038: aload 2
      // 039: new com/l7tech/util/Pair
      // 03c: dup
      // 03d: aload 3
      // 03e: getstatic com/l7tech/server/service/ServiceCache$CachedServiceNotificationType.ENABLED Lcom/l7tech/server/service/ServiceCache$CachedServiceNotificationType;
      // 041: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 044: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 049: pop
      // 04a: goto 080
      // 04d: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 050: athrow
      // 051: aload 1
      // 052: invokevirtual com/l7tech/gateway/common/service/PublishedService.isDisabled ()Z
      // 055: ifeq 080
      // 058: aload 4
      // 05a: invokevirtual com/l7tech/gateway/common/service/PublishedService.isDisabled ()Z
      // 05d: ifne 080
      // 060: goto 067
      // 063: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 066: athrow
      // 067: aload 2
      // 068: new com/l7tech/util/Pair
      // 06b: dup
      // 06c: aload 3
      // 06d: getstatic com/l7tech/server/service/ServiceCache$CachedServiceNotificationType.DISABLED Lcom/l7tech/server/service/ServiceCache$CachedServiceNotificationType;
      // 070: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 073: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 078: pop
      // 079: goto 080
      // 07c: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 07f: athrow
      // 080: iload 5
      // 082: ifeq 0e0
      // 085: aload 0
      // 086: getfield com/l7tech/server/service/ServiceCache.q Lcom/l7tech/server/service/resolution/ServiceResolutionManager;
      // 089: aload 0
      // 08a: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 08d: aload 1
      // 08e: invokevirtual com/l7tech/server/service/resolution/ServiceResolutionManager.notifyServiceUpdated (Lcom/l7tech/gateway/common/audit/Audit;Lcom/l7tech/gateway/common/service/PublishedService;)V
      // 091: aload 2
      // 092: new com/l7tech/util/Pair
      // 095: dup
      // 096: aload 3
      // 097: getstatic com/l7tech/server/service/ServiceCache$CachedServiceNotificationType.UPDATED Lcom/l7tech/server/service/ServiceCache$CachedServiceNotificationType;
      // 09a: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 09d: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 0a2: pop
      // 0a3: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 0a6: aload 1
      // 0a7: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 0aa: aload 1
      // 0ab: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 0ae: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0b1: aload 1
      // 0b2: invokevirtual com/l7tech/gateway/common/service/PublishedService.getVersion ()I
      // 0b5: istore 7
      // 0b7: astore 8
      // 0b9: astore 9
      // 0bb: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 0be: astore 10
      // 0c0: aload 10
      // 0c2: bipush 9
      // 0c4: aaload
      // 0c5: aload 9
      // 0c7: aload 10
      // 0c9: bipush 35
      // 0cb: aaload
      // 0cc: aload 8
      // 0ce: aload 10
      // 0d0: bipush 19
      // 0d2: aaload
      // 0d3: iload 7
      // 0d5: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)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\u0001\u0001\u0001\u0001" ]
      // 0da: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 0dd: goto 126
      // 0e0: aload 0
      // 0e1: getfield com/l7tech/server/service/ServiceCache.q Lcom/l7tech/server/service/resolution/ServiceResolutionManager;
      // 0e4: aload 0
      // 0e5: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 0e8: aload 1
      // 0e9: invokevirtual com/l7tech/server/service/resolution/ServiceResolutionManager.notifyServiceCreated (Lcom/l7tech/gateway/common/audit/Audit;Lcom/l7tech/gateway/common/service/PublishedService;)V
      // 0ec: aload 2
      // 0ed: new com/l7tech/util/Pair
      // 0f0: dup
      // 0f1: aload 3
      // 0f2: getstatic com/l7tech/server/service/ServiceCache$CachedServiceNotificationType.CREATED Lcom/l7tech/server/service/ServiceCache$CachedServiceNotificationType;
      // 0f5: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 0f8: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 0fd: pop
      // 0fe: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 101: aload 1
      // 102: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 105: aload 1
      // 106: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 109: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 10c: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 10f: astore 10
      // 111: aload 10
      // 113: bipush 10
      // 115: aaload
      // 116: dup_x2
      // 117: pop
      // 118: aload 10
      // 11a: bipush 20
      // 11c: aaload
      // 11d: swap
      // 11e: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;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\u0001\u0001" ]
      // 123: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 126: aload 1
      // 127: invokestatic com/l7tech/objectmodel/imp/PersistentEntityUtil.isLocked (Lcom/l7tech/objectmodel/PersistentEntity;)Z
      // 12a: ifne 13f
      // 12d: new java/lang/IllegalArgumentException
      // 130: dup
      // 131: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 134: bipush 32
      // 136: aaload
      // 137: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 13a: athrow
      // 13b: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 13e: athrow
      // 13f: aload 0
      // 140: getfield com/l7tech/server/service/ServiceCache.b Ljava/util/Map;
      // 143: aload 3
      // 144: aload 1
      // 145: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 14a: pop
      // 14b: aload 1
      // 14c: invokevirtual com/l7tech/gateway/common/service/PublishedService.getPolicy ()Lcom/l7tech/policy/Policy;
      // 14f: astore 6
      // 151: aload 6
      // 153: ifnonnull 187
      // 156: new com/l7tech/server/policy/ServerPolicyException
      // 159: dup
      // 15a: aconst_null
      // 15b: aload 1
      // 15c: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 15f: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 162: aload 1
      // 163: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 166: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 169: bipush 36
      // 16b: aaload
      // 16c: dup_x2
      // 16d: pop
      // 16e: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 171: bipush 0
      // 172: aaload
      // 173: swap
      // 174: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 177: bipush 30
      // 179: aaload
      // 17a: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;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\u0001\u0001\u0001" ]
      // 17f: invokespecial com/l7tech/server/policy/ServerPolicyException.<init> (Lcom/l7tech/policy/assertion/Assertion;Ljava/lang/String;)V
      // 182: athrow
      // 183: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 186: athrow
      // 187: aload 6
      // 189: invokestatic com/l7tech/objectmodel/imp/PersistentEntityUtil.isLocked (Lcom/l7tech/objectmodel/PersistentEntity;)Z
      // 18c: ifne 1a0
      // 18f: new java/lang/IllegalArgumentException
      // 192: dup
      // 193: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 196: bipush 3
      // 197: aaload
      // 198: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 19b: athrow
      // 19c: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 19f: athrow
      // 1a0: aload 0
      // 1a1: getfield com/l7tech/server/service/ServiceCache.p Lcom/l7tech/server/policy/PolicyCache;
      // 1a4: aload 6
      // 1a6: invokeinterface com/l7tech/server/policy/PolicyCache.update (Lcom/l7tech/policy/Policy;)V 2
      // 1ab: return
      // try (16 -> 22): 23 com/l7tech/server/policy/ServerPolicyException
      // try (19 -> 34): 34 com/l7tech/server/policy/ServerPolicyException
      // try (36 -> 42): 43 com/l7tech/server/policy/ServerPolicyException
      // try (39 -> 53): 54 com/l7tech/server/policy/ServerPolicyException
      // try (133 -> 143): 143 com/l7tech/server/policy/ServerPolicyException
      // try (154 -> 179): 179 com/l7tech/server/policy/ServerPolicyException
      // try (181 -> 191): 191 com/l7tech/server/policy/ServerPolicyException
   }

   public void removeFromCache(PublishedService var1) {
      this.l.writeLock().lock();

      try {
         this.d(var1);
         this.d();
      } finally {
         this.l.writeLock().unlock();
      }
   }

   private ServerPolicyHandle b(PublishedService var1) {
      ServerPolicyHandle var2 = null;
      Policy var3 = var1.getPolicy();
      if (var3 != null) {
         var2 = this.p.getServerPolicy(var3);
      }

      return var2;
   }

   private void a(PublishedService param1, Goid param2, Exception 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:
      // 00: aload 1
      // 01: astore 4
      // 03: aload 4
      // 05: ifnonnull 0f
      // 08: aload 0
      // 09: aload 2
      // 0a: invokevirtual com/l7tech/server/service/ServiceCache.getCachedServiceByPolicy (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/gateway/common/service/PublishedService;
      // 0d: astore 4
      // 0f: aload 4
      // 11: ifnull a0
      // 14: aload 4
      // 16: invokevirtual com/l7tech/gateway/common/service/PublishedService.isDisabled ()Z
      // 19: ifne a0
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: aload 3
      // 24: instanceof com/l7tech/server/policy/ServerPolicyInstantiationException
      // 27: ifeq 5d
      // 2a: goto 31
      // 2d: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 30: athrow
      // 31: aload 0
      // 32: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 35: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SERVICE_CACHE_BAD_POLICY_FORMAT Lcom/l7tech/gateway/common/audit/Messages$M;
      // 38: bipush 2
      // 39: anewarray 836
      // 3c: dup
      // 3d: bipush 0
      // 3e: aload 4
      // 40: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 43: aastore
      // 44: dup
      // 45: bipush 1
      // 46: aload 4
      // 48: invokevirtual com/l7tech/gateway/common/service/PublishedService.getId ()Ljava/lang/String;
      // 4b: aastore
      // 4c: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 4f: aload 0
      // 50: aload 4
      // 52: bipush 1
      // 53: invokevirtual com/l7tech/server/service/ServiceCache.a (Lcom/l7tech/gateway/common/service/PublishedService;Z)V
      // 56: goto a0
      // 59: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5c: athrow
      // 5d: aload 0
      // 5e: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 61: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SERVICE_CACHE_BAD_POLICY Lcom/l7tech/gateway/common/audit/Messages$M;
      // 64: bipush 2
      // 65: anewarray 836
      // 68: dup
      // 69: bipush 0
      // 6a: aload 4
      // 6c: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 6f: aastore
      // 70: dup
      // 71: bipush 1
      // 72: aload 4
      // 74: invokevirtual com/l7tech/gateway/common/service/PublishedService.getId ()Ljava/lang/String;
      // 77: aastore
      // 78: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 7b: aload 0
      // 7c: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 7f: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SERVICE_CACHE_DISABLING_SERVICE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 82: bipush 2
      // 83: anewarray 836
      // 86: dup
      // 87: bipush 0
      // 88: aload 4
      // 8a: invokevirtual com/l7tech/gateway/common/service/PublishedService.getId ()Ljava/lang/String;
      // 8d: aastore
      // 8e: dup
      // 8f: bipush 1
      // 90: aload 4
      // 92: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 95: aastore
      // 96: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 99: aload 0
      // 9a: aload 4
      // 9c: bipush 1
      // 9d: invokevirtual com/l7tech/server/service/ServiceCache.a (Lcom/l7tech/gateway/common/service/PublishedService;Z)V
      // a0: return
      // try (8 -> 13): 14 java/lang/IllegalArgumentException
      // try (10 -> 19): 20 java/lang/IllegalArgumentException
      // try (16 -> 43): 43 java/lang/IllegalArgumentException
   }

   private void a(Policy 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: invokevirtual com/l7tech/policy/Policy.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 05: invokevirtual com/l7tech/server/service/ServiceCache.getCachedServiceByPolicy (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/gateway/common/service/PublishedService;
      // 08: astore 2
      // 09: aload 2
      // 0a: ifnull 5d
      // 0d: aload 2
      // 0e: invokevirtual com/l7tech/gateway/common/service/PublishedService.getPolicy ()Lcom/l7tech/policy/Policy;
      // 11: ifnull 5d
      // 14: goto 1b
      // 17: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1a: athrow
      // 1b: aload 2
      // 1c: invokevirtual com/l7tech/gateway/common/service/PublishedService.getPolicy ()Lcom/l7tech/policy/Policy;
      // 1f: invokevirtual com/l7tech/policy/Policy.getVersion ()I
      // 22: aload 1
      // 23: invokevirtual com/l7tech/policy/Policy.getVersion ()I
      // 26: if_icmpeq 5d
      // 29: goto 30
      // 2c: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2f: athrow
      // 30: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 33: aload 2
      // 34: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 37: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 3a: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 3d: bipush 23
      // 3f: aaload
      // 40: swap
      // 41: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 44: bipush 1
      // 45: aaload
      // 46: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 4b: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 4e: aload 0
      // 4f: aload 2
      // 50: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 53: invokevirtual com/l7tech/server/service/ServiceCache.a (Lcom/l7tech/objectmodel/Goid;)V
      // 56: goto 5d
      // 59: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5c: athrow
      // 5d: aload 2
      // 5e: ifnull 99
      // 61: aload 0
      // 62: aload 2
      // 63: invokevirtual com/l7tech/server/service/ServiceCache.c (Lcom/l7tech/gateway/common/service/PublishedService;)Z
      // 66: ifeq 99
      // 69: goto 70
      // 6c: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6f: athrow
      // 70: aload 0
      // 71: getfield com/l7tech/server/service/ServiceCache.n Lcom/l7tech/server/audit/Auditor;
      // 74: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SERVICE_CACHE_ENABLING_SERVICE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 77: bipush 2
      // 78: anewarray 836
      // 7b: dup
      // 7c: bipush 0
      // 7d: aload 2
      // 7e: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 81: aastore
      // 82: dup
      // 83: bipush 1
      // 84: aload 2
      // 85: invokevirtual com/l7tech/gateway/common/service/PublishedService.getId ()Ljava/lang/String;
      // 88: aastore
      // 89: invokevirtual com/l7tech/server/audit/Auditor.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 8c: aload 0
      // 8d: aload 2
      // 8e: bipush 0
      // 8f: invokevirtual com/l7tech/server/service/ServiceCache.a (Lcom/l7tech/gateway/common/service/PublishedService;Z)V
      // 92: goto 99
      // 95: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 98: athrow
      // 99: return
      // try (5 -> 10): 11 java/lang/IllegalArgumentException
      // try (7 -> 19): 20 java/lang/IllegalArgumentException
      // try (13 -> 39): 40 java/lang/IllegalArgumentException
      // try (42 -> 48): 49 java/lang/IllegalArgumentException
      // try (44 -> 71): 72 java/lang/IllegalArgumentException
   }

   private boolean c(PublishedService var1) {
      return this.e.contains(var1.getGoid());
   }

   private void a(PublishedService var1, boolean var2) {
      try {
         if (var2) {
            this.e.add(var1.getGoid());
            return;
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      this.e.remove(var1.getGoid());
   }

   private void d(PublishedService var1) {
      Goid var2 = var1.getGoid();
      Policy var3 = var1.getPolicy();

      try {
         this.b.remove(var2);
         if (var3 != null) {
            this.p.remove(var3.getGoid());
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      try {
         this.c.remove(var2);
         this.q.notifyServiceDeleted(var1);
         if (var3 != null) {
            var3.forceRecompile();
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      Logger var10000 = a;
      String var10001 = var1.getName();
      String var10002 = String.valueOf(var1.getGoid());
      String[] var4 = s;
      var10000.finest(var4[16] + var10001 + var4[6] + var10002);
   }

   public Collection<PublishedService> getCachedServices() {
      this.l.readLock().lock();

      try {
         return Collections.unmodifiableCollection(this.b.values());
      } finally {
         this.l.readLock().unlock();
      }
   }

   public PublishedService getCachedService(Goid var1) {
      PublishedService var2 = null;
      this.l.readLock().lock();

      try {
         var2 = this.b.get(var1);
      } finally {
         this.l.readLock().unlock();
      }

      return var2;
   }

   public PublishedService getCachedServiceByPolicy(Goid var1) {
      PublishedService var2 = null;
      this.l.readLock().lock();

      try {
         for (PublishedService var4 : this.b.values()) {
            Policy var5 = var4.getPolicy();

            try {
               if (var5 == null || !var5.getGoid().equals(var1)) {
                  continue;
               }
            } catch (IllegalArgumentException var9) {
               throw a(var9);
            }

            var2 = var4;
            break;
         }
      } finally {
         this.l.readLock().unlock();
      }

      return var2;
   }

   public List<PublishedService> getInternalServices() {
      ArrayList var1 = new ArrayList();
      this.l.readLock().lock();

      try {
         for (PublishedService var3 : this.b.values()) {
            try {
               if (var3.isInternal()) {
                  var1.add(var3);
               }
            } catch (IllegalArgumentException var7) {
               throw a(var7);
            }
         }
      } finally {
         this.l.readLock().unlock();
      }

      return var1;
   }

   public Collection<ServiceStatistics> getAllServiceStatistics() {
      return new ArrayList<>(this.c.values());
   }

   public ServiceStatistics getServiceStatistics(Goid var1) {
      ServiceStatistics var2 = this.c.get(var1);
      if (var2 == null) {
         var2 = new ServiceStatistics(var1);
         ServiceStatistics var3 = this.c.putIfAbsent(var1, var2);

         try {
            if (var3 != null) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw a(var4);
         }
      }

      return var2;
   }

   public void afterPropertiesSet() throws Exception {
      this.n = new Auditor(this, this.getApplicationContext(), a);
      this.a();
   }

   public void destroy() throws Exception {
      try {
         this.k.cancel();
         if (this.j != null) {
            this.j.shutdown();
         }
      } catch (Exception var1) {
         throw a(var1);
      }
   }

   private void c() {
      // $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/LinkedList
      // 003: dup
      // 004: invokespecial java/util/LinkedList.<init> ()V
      // 007: astore 1
      // 008: aload 0
      // 009: getfield com/l7tech/server/service/ServiceCache.l Ljava/util/concurrent/locks/ReadWriteLock;
      // 00c: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 011: astore 2
      // 012: aload 2
      // 013: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 018: aload 0
      // 019: invokevirtual com/l7tech/server/service/ServiceCache.b ()Ljava/util/Map;
      // 01c: astore 3
      // 01d: aload 0
      // 01e: getfield com/l7tech/server/service/ServiceCache.g Lcom/l7tech/server/service/ServiceManager;
      // 021: invokeinterface com/l7tech/server/service/ServiceManager.findVersionMap ()Ljava/util/Map; 1
      // 026: astore 4
      // 028: goto 05d
      // 02b: astore 5
      // 02d: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 030: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level;
      // 033: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 036: astore 18
      // 038: aload 18
      // 03a: bipush 5
      // 03b: aaload
      // 03c: aload 5
      // 03e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 041: aload 2
      // 042: ifnull 04b
      // 045: aload 2
      // 046: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 04b: aload 0
      // 04c: invokevirtual com/l7tech/server/service/ServiceCache.getApplicationContext ()Lorg/springframework/context/ApplicationContext;
      // 04f: new com/l7tech/server/event/system/ServiceReloadEvent
      // 052: dup
      // 053: aload 0
      // 054: invokespecial com/l7tech/server/event/system/ServiceReloadEvent.<init> (Ljava/lang/Object;)V
      // 057: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 05c: return
      // 05d: new java/util/ArrayList
      // 060: dup
      // 061: invokespecial java/util/ArrayList.<init> ()V
      // 064: astore 5
      // 066: new java/util/ArrayList
      // 069: dup
      // 06a: invokespecial java/util/ArrayList.<init> ()V
      // 06d: astore 6
      // 06f: aload 4
      // 071: invokeinterface java/util/Map.keySet ()Ljava/util/Set; 1
      // 076: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 07b: astore 7
      // 07d: aload 7
      // 07f: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 084: ifeq 117
      // 087: aload 7
      // 089: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 08e: checkcast com/l7tech/objectmodel/Goid
      // 091: astore 8
      // 093: aload 3
      // 094: aload 8
      // 096: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 09b: checkcast java/lang/Integer
      // 09e: astore 9
      // 0a0: aload 9
      // 0a2: ifnonnull 0d1
      // 0a5: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 0a8: aload 8
      // 0aa: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0ad: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 0b0: bipush 18
      // 0b2: aaload
      // 0b3: swap
      // 0b4: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 0b7: bipush 37
      // 0b9: aaload
      // 0ba: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 0bf: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 0c2: aload 5
      // 0c4: aload 8
      // 0c6: invokevirtual java/util/ArrayList.add (Ljava/lang/Object;)Z
      // 0c9: pop
      // 0ca: goto 114
      // 0cd: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0d0: athrow
      // 0d1: aload 4
      // 0d3: aload 8
      // 0d5: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 0da: checkcast java/lang/Integer
      // 0dd: astore 10
      // 0df: aload 10
      // 0e1: aload 9
      // 0e3: invokevirtual java/lang/Integer.equals (Ljava/lang/Object;)Z
      // 0e6: ifne 114
      // 0e9: aload 5
      // 0eb: aload 8
      // 0ed: invokevirtual java/util/ArrayList.add (Ljava/lang/Object;)Z
      // 0f0: pop
      // 0f1: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 0f4: aload 8
      // 0f6: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0f9: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 0fc: bipush 23
      // 0fe: aaload
      // 0ff: swap
      // 100: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 103: bipush 2
      // 104: aaload
      // 105: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 10a: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 10d: goto 114
      // 110: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 113: athrow
      // 114: goto 07d
      // 117: aload 3
      // 118: invokeinterface java/util/Map.keySet ()Ljava/util/Set; 1
      // 11d: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 122: astore 7
      // 124: aload 7
      // 126: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 12b: ifeq 188
      // 12e: aload 7
      // 130: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 135: checkcast com/l7tech/objectmodel/Goid
      // 138: astore 8
      // 13a: aload 4
      // 13c: aload 8
      // 13e: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 143: ifnonnull 185
      // 146: aload 1
      // 147: new com/l7tech/util/Pair
      // 14a: dup
      // 14b: aload 8
      // 14d: getstatic com/l7tech/server/service/ServiceCache$CachedServiceNotificationType.DELETED Lcom/l7tech/server/service/ServiceCache$CachedServiceNotificationType;
      // 150: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 153: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 158: pop
      // 159: aload 6
      // 15b: aload 8
      // 15d: invokevirtual java/util/ArrayList.add (Ljava/lang/Object;)Z
      // 160: pop
      // 161: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 164: aload 8
      // 166: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 169: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 16c: bipush 23
      // 16e: aaload
      // 16f: swap
      // 170: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 173: bipush 28
      // 175: aaload
      // 176: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 17b: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 17e: goto 185
      // 181: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 184: athrow
      // 185: goto 124
      // 188: aload 5
      // 18a: invokevirtual java/util/ArrayList.isEmpty ()Z
      // 18d: ifeq 1aa
      // 190: aload 6
      // 192: invokevirtual java/util/ArrayList.isEmpty ()Z
      // 195: ifeq 1aa
      // 198: goto 19f
      // 19b: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 19e: athrow
      // 19f: aload 2
      // 1a0: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 1a5: aconst_null
      // 1a6: astore 2
      // 1a7: goto 373
      // 1aa: aload 2
      // 1ab: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 1b0: aconst_null
      // 1b1: astore 2
      // 1b2: aload 0
      // 1b3: getfield com/l7tech/server/service/ServiceCache.l Ljava/util/concurrent/locks/ReadWriteLock;
      // 1b6: invokeinterface java/util/concurrent/locks/ReadWriteLock.writeLock ()Ljava/util/concurrent/locks/Lock; 1
      // 1bb: astore 7
      // 1bd: aload 7
      // 1bf: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 1c4: aload 5
      // 1c6: invokevirtual java/util/ArrayList.iterator ()Ljava/util/Iterator;
      // 1c9: astore 8
      // 1cb: aload 8
      // 1cd: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 1d2: ifeq 302
      // 1d5: aload 8
      // 1d7: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 1dc: checkcast com/l7tech/objectmodel/Goid
      // 1df: astore 9
      // 1e1: aload 0
      // 1e2: getfield com/l7tech/server/service/ServiceCache.g Lcom/l7tech/server/service/ServiceManager;
      // 1e5: aload 9
      // 1e7: invokeinterface com/l7tech/server/service/ServiceManager.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 1ec: checkcast com/l7tech/gateway/common/service/PublishedService
      // 1ef: astore 10
      // 1f1: goto 20e
      // 1f4: astore 11
      // 1f6: aconst_null
      // 1f7: astore 10
      // 1f9: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 1fc: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 1ff: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 202: astore 18
      // 204: aload 18
      // 206: bipush 26
      // 208: aaload
      // 209: aload 11
      // 20b: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 20e: aload 10
      // 210: ifnull 2ff
      // 213: aload 10
      // 215: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 218: astore 11
      // 21a: aload 10
      // 21c: invokevirtual com/l7tech/gateway/common/service/PublishedService.getPolicy ()Lcom/l7tech/policy/Policy;
      // 21f: astore 12
      // 221: aconst_null
      // 222: astore 13
      // 224: aload 12
      // 226: ifnull 239
      // 229: aload 0
      // 22a: getfield com/l7tech/server/service/ServiceCache.p Lcom/l7tech/server/policy/PolicyCache;
      // 22d: aload 12
      // 22f: invokevirtual com/l7tech/policy/Policy.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 232: invokeinterface com/l7tech/server/policy/PolicyCache.getUniquePolicyVersionIdentifer (Lcom/l7tech/objectmodel/Goid;)Ljava/lang/String; 2
      // 237: astore 13
      // 239: aload 13
      // 23b: ifnonnull 248
      // 23e: aload 10
      // 240: invokevirtual com/l7tech/gateway/common/service/PublishedService.getVersion ()I
      // 243: invokestatic java/lang/Integer.toString (I)Ljava/lang/String;
      // 246: astore 13
      // 248: aload 13
      // 24a: astore 14
      // 24c: aload 0
      // 24d: getfield com/l7tech/server/service/ServiceCache.d Ljava/util/Map;
      // 250: aload 11
      // 252: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 257: checkcast java/lang/String
      // 25a: astore 15
      // 25c: aload 15
      // 25e: ifnull 272
      // 261: aload 15
      // 263: aload 14
      // 265: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 268: ifne 2c0
      // 26b: goto 272
      // 26e: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 271: athrow
      // 272: aload 0
      // 273: new com/l7tech/gateway/common/service/PublishedService
      // 276: dup
      // 277: aload 10
      // 279: bipush 1
      // 27a: invokespecial com/l7tech/gateway/common/service/PublishedService.<init> (Lcom/l7tech/gateway/common/service/PublishedService;Z)V
      // 27d: aload 1
      // 27e: invokevirtual com/l7tech/server/service/ServiceCache.a (Lcom/l7tech/gateway/common/service/PublishedService;Ljava/util/List;)V
      // 281: aload 15
      // 283: ifnull 2c0
      // 286: goto 28d
      // 289: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28c: athrow
      // 28d: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 290: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level;
      // 293: aload 11
      // 295: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 298: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 29b: bipush 24
      // 29d: aaload
      // 29e: swap
      // 29f: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 2a2: bipush 25
      // 2a4: aaload
      // 2a5: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 2aa: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 2ad: aload 0
      // 2ae: getfield com/l7tech/server/service/ServiceCache.d Ljava/util/Map;
      // 2b1: aload 11
      // 2b3: invokeinterface java/util/Map.remove (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 2b8: pop
      // 2b9: goto 2c0
      // 2bc: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2bf: athrow
      // 2c0: goto 2ff
      // 2c3: astore 15
      // 2c5: getstatic com/l7tech/server/service/ServiceCache.a Ljava/util/logging/Logger;
      // 2c8: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 2cb: aload 11
      // 2cd: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 2d0: aload 15
      // 2d2: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 2d5: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 2d8: astore 18
      // 2da: aload 18
      // 2dc: bipush 11
      // 2de: aaload
      // 2df: dup_x2
      // 2e0: pop
      // 2e1: aload 18
      // 2e3: bipush 33
      // 2e5: aaload
      // 2e6: swap
      // 2e7: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;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\u0001\u0001" ]
      // 2ec: aload 15
      // 2ee: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 2f1: aload 0
      // 2f2: getfield com/l7tech/server/service/ServiceCache.d Ljava/util/Map;
      // 2f5: aload 11
      // 2f7: aload 14
      // 2f9: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 2fe: pop
      // 2ff: goto 1cb
      // 302: aload 6
      // 304: invokevirtual java/util/ArrayList.iterator ()Ljava/util/Iterator;
      // 307: astore 8
      // 309: aload 8
      // 30b: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 310: ifeq 344
      // 313: aload 8
      // 315: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 31a: checkcast com/l7tech/objectmodel/Goid
      // 31d: astore 9
      // 31f: aload 0
      // 320: getfield com/l7tech/server/service/ServiceCache.b Ljava/util/Map;
      // 323: aload 9
      // 325: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 32a: checkcast com/l7tech/gateway/common/service/PublishedService
      // 32d: astore 10
      // 32f: aload 10
      // 331: ifnull 341
      // 334: aload 0
      // 335: aload 10
      // 337: invokevirtual com/l7tech/server/service/ServiceCache.d (Lcom/l7tech/gateway/common/service/PublishedService;)V
      // 33a: goto 341
      // 33d: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 340: athrow
      // 341: goto 309
      // 344: aload 0
      // 345: invokevirtual com/l7tech/server/service/ServiceCache.d ()V
      // 348: aload 7
      // 34a: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 34f: goto 35e
      // 352: astore 16
      // 354: aload 7
      // 356: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 35b: aload 16
      // 35d: athrow
      // 35e: aload 1
      // 35f: invokeinterface java/util/List.isEmpty ()Z 1
      // 364: ifne 373
      // 367: aload 0
      // 368: aload 1
      // 369: invokevirtual com/l7tech/server/service/ServiceCache.a (Ljava/util/List;)V
      // 36c: goto 373
      // 36f: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 372: athrow
      // 373: aload 2
      // 374: ifnull 384
      // 377: aload 2
      // 378: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 37d: goto 384
      // 380: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 383: athrow
      // 384: aload 0
      // 385: invokevirtual com/l7tech/server/service/ServiceCache.getApplicationContext ()Lorg/springframework/context/ApplicationContext;
      // 388: new com/l7tech/server/event/system/ServiceReloadEvent
      // 38b: dup
      // 38c: aload 0
      // 38d: invokespecial com/l7tech/server/event/system/ServiceReloadEvent.<init> (Ljava/lang/Object;)V
      // 390: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 395: goto 3bf
      // 398: astore 17
      // 39a: aload 2
      // 39b: ifnull 3ab
      // 39e: aload 2
      // 39f: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 3a4: goto 3ab
      // 3a7: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3aa: athrow
      // 3ab: aload 0
      // 3ac: invokevirtual com/l7tech/server/service/ServiceCache.getApplicationContext ()Lorg/springframework/context/ApplicationContext;
      // 3af: new com/l7tech/server/event/system/ServiceReloadEvent
      // 3b2: dup
      // 3b3: aload 0
      // 3b4: invokespecial com/l7tech/server/event/system/ServiceReloadEvent.<init> (Ljava/lang/Object;)V
      // 3b7: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 3bc: aload 17
      // 3be: athrow
      // 3bf: return
      // try (13 -> 17): 18 com/l7tech/objectmodel/FindException
      // try (191 -> 197): 198 com/l7tech/objectmodel/FindException
      // try (251 -> 282): 283 com/l7tech/objectmodel/FindException
      // try (244 -> 261): 262 com/l7tech/objectmodel/FindException
      // try (242 -> 248): 249 com/l7tech/objectmodel/FindException
      // try (236 -> 285): 286 com/l7tech/server/policy/ServerPolicyException
      // try (330 -> 335): 336 com/l7tech/objectmodel/FindException
      // try (181 -> 341): 344 null
      // try (344 -> 345): 344 null
      // try (10 -> 28): 373 null
      // try (349 -> 355): 356 com/l7tech/objectmodel/FindException
      // try (157 -> 163): 164 com/l7tech/objectmodel/FindException
      // try (125 -> 153): 154 com/l7tech/objectmodel/FindException
      // try (90 -> 110): 111 com/l7tech/objectmodel/FindException
      // try (64 -> 83): 83 com/l7tech/objectmodel/FindException
      // try (40 -> 358): 373 null
      // try (358 -> 362): 363 com/l7tech/objectmodel/FindException
      // try (373 -> 374): 373 null
      // try (374 -> 378): 379 com/l7tech/objectmodel/FindException
   }

   private void d() {
      // $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/server/service/ServiceCache.b Ljava/util/Map;
      // 04: invokeinterface java/util/Map.values ()Ljava/util/Collection; 1
      // 09: invokeinterface java/util/Collection.iterator ()Ljava/util/Iterator; 1
      // 0e: astore 1
      // 0f: aload 1
      // 10: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 15: ifeq 5e
      // 18: aload 1
      // 19: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 1e: checkcast com/l7tech/gateway/common/service/PublishedService
      // 21: astore 2
      // 22: aload 2
      // 23: invokevirtual com/l7tech/gateway/common/service/PublishedService.isDisabled ()Z
      // 26: ifne 5b
      // 29: aload 2
      // 2a: invokevirtual com/l7tech/gateway/common/service/PublishedService.isSoap ()Z
      // 2d: ifne 5b
      // 30: goto 37
      // 33: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 36: athrow
      // 37: getstatic com/l7tech/server/service/ServiceCache.s [Ljava/lang/String;
      // 3a: bipush 39
      // 3c: aaload
      // 3d: aload 2
      // 3e: invokevirtual com/l7tech/gateway/common/service/PublishedService.getRoutingUri ()Ljava/lang/String;
      // 41: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 44: ifeq 5b
      // 47: goto 4e
      // 4a: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4d: athrow
      // 4e: aload 0
      // 4f: aload 2
      // 50: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 53: putfield com/l7tech/server/service/ServiceCache.o Lcom/l7tech/objectmodel/Goid;
      // 56: return
      // 57: invokestatic com/l7tech/server/service/ServiceCache.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5a: athrow
      // 5b: goto 0f
      // 5e: aload 0
      // 5f: aconst_null
      // 60: putfield com/l7tech/server/service/ServiceCache.o Lcom/l7tech/objectmodel/Goid;
      // 63: return
      // try (12 -> 18): 19 java/lang/IllegalArgumentException
      // try (15 -> 28): 29 java/lang/IllegalArgumentException
      // try (21 -> 36): 36 java/lang/IllegalArgumentException
   }

   static {
      String[] var5 = new String[41];
      int var3 = 0;
      String var2 = "#13#m\u001c\u00114\u0002\u0006vi\u0017P\"\u0002B#p\u001d\u00115\u0006Ek|SS3\u0004Gvj\u0016\u00119\u0001\u0006ll\u0007U7\u0013Cg9\u0003^:\u000eEz7)#m\u001c\u00114\u0002\u0006vi\u0017P\"\u0002B#p\u001d\u00115\u0006Ek|SS3\u0004Gvj\u0016\u00119\u0012Rgx\u0007T2I@Vw\u001f^5\fCg9\u0000T$\u0011O`|SA9\u000bO``S\\7\u001e\u0006mv\u0007\u00114\u0002\u0006su\u0012R3\u0003\u0006jw\u0007^v\u0013Nf9\u0000T$\u0011O`|SR7\u0004Nf\u0007Fw\u0012S:\u0002BDfk\u0001^$GAfm\u0007X8\u0000\u0006u|\u0001B?\bHp7SE>\u000eU#p\u001dE3\u0000Tjm\n\u00115\u000fC`rSX%GUwv\u0003A?\tA#i\u0001T;\u0006Rvk\u0016]/\u0012#\u007f\u0001^;GEbz\u001bTxGAlp\u0017\f\t?l\u001dZ8\bQm'\nGp\u0000P4\u000bCg#S\u0010vi\u0017P\"\u0002B#j\u0016C \u000eEf9\u000eb}\u0017T2GUfk\u0005X5\u0002\u0006\u0014Sv\u001fX5\u001e\u0006ev\u0001\u0011%\u0002Tup\u0010TvD\u0003nj]\u0016Al\u001a]2\u000eHd9\u0000T$\u0011O`|SR7\u0004Nf `v\u0006]2GHlmSD&\u0003Gw|SB3\u0015Pjz\u0016\u00115\u0006Ek|I\u0011\u0017Al\u001a]\"GUfk\u0005X5\u0002\u0006`x\u0010Y3GOm9\u0010q|\u001e^ \u0002B#j\u0016C \u000eEf9(Ex\u001a]3\u0003\u0006wvSX8\u000eRjx\u001fX,\u0002\u0006p|\u0001G?\u0004C#j\u0007P\"\u000eUwp\u0010Bx\bp|\u0001G?\u0004C#\t#o\u0016C%\u000eIm$\u000f#p\u001d\u00115\u0006Ek|]\u00119\u000eB>\u0018Fa\u0010T&\u0013OlwSS#\u000eJgp\u001dVv\u0004G`q\u0016\u001a`v\u0006]2GHlmSV3\u0013\u0006p|\u0001G?\u0004C#{\u0012R=\bp|\u0001G?\u0004C#\u0014Sv\u001fX5\u001e\u0006ev\u0001\u0011%\u0002Tup\u0010TvD\u0015#p\u0000\u00118\b\u0006ov\u001dV3\u0015\u0006jw\u0005P:\u000eB;p|\u0001G?\u0004C#j\u0010Y3\u0003So|\u0017\u00110\bT#l\u0003U7\u0013C#v\u0001\u00117\u0003Bjm\u001a^8\u0004Gmw\u001cEv\u0005C#k\u0016E$\u000eCu|\u0017,jw\u001aE?\u0006Rf9\u0000T$\u0011O`|SR7\u0004Nf9\u0005T$\u0014OlwSR>\u0002Eh9\u0003C9\u0004Cpj8#m\u001c\u00114\u0002\u0006g|\u001fT\"\u0002B#\u007f\u0001^;GEbz\u001bTv\u0005C`x\u0006B3GHl9\u001f^8\u0000Cq9\u001a_v\u0003Gwx\u0011P%\u0002\b\u0017`x\u0010Y3GGok\u0016P2\u001e\u0006al\u001a]\"G\u000e<0\u000f*9\u001bP%GHl9\u0003^:\u000eEzWGp\u0000P4\u000bOm~Sa#\u0005Jjj\u001bT24Cqo\u001aR3G\u0005x)\u000e\u0011~\u001c\u0017~0H\u0011&\bJjz\n\u00115\bSo}S_9\u0013\u0006a|SR9\nVju\u0016UvOGpj\u0016C\"\u000eIm9\b\u0003+G]0dZ9Vw\u001f^5\fCg9\u0000T$\u0011O`|S\\7\u001e\u0006mv\u0007\u00114\u0002\u0006su\u0012R3\u0003\u0006jw\u0007^v\u0013Nf9\u0000T$\u0011O`|SR7\u0004Nf\r#p\u0000\u0011?\tPbu\u001aUlG\u0015P|\u0001G?\u0004C#z\u0012R>\u0002\u0006q|\u0015C3\u0014N\u000f#p\u001d\u00115\u0006Ek|]\u00119\u000eB>\tP|\u0001G?\u0004C#:\u0016#m\u001c\u00114\u0002\u0006b}\u0017T2GRl9\u0010P5\u000fC-CGp\u0000P4\u000bOm~Sa#\u0005Jjj\u001bT24Cqo\u001aR3G\u0005x)\u000e\u0011~\u001c\u0017~0H\u0011&\bJjz\n\u00115\bSo}S_9\u0013\u0006a|SR9\nVju\u0016U";
      int var4 = "#13#m\u001c\u00114\u0002\u0006vi\u0017P\"\u0002B#p\u001d\u00115\u0006Ek|SS3\u0004Gvj\u0016\u00119\u0001\u0006ll\u0007U7\u0013Cg9\u0003^:\u000eEz7)#m\u001c\u00114\u0002\u0006vi\u0017P\"\u0002B#p\u001d\u00115\u0006Ek|SS3\u0004Gvj\u0016\u00119\u0012Rgx\u0007T2I@Vw\u001f^5\fCg9\u0000T$\u0011O`|SA9\u000bO``S\\7\u001e\u0006mv\u0007\u00114\u0002\u0006su\u0012R3\u0003\u0006jw\u0007^v\u0013Nf9\u0000T$\u0011O`|SR7\u0004Nf\u0007Fw\u0012S:\u0002BDfk\u0001^$GAfm\u0007X8\u0000\u0006u|\u0001B?\bHp7SE>\u000eU#p\u001dE3\u0000Tjm\n\u00115\u000fC`rSX%GUwv\u0003A?\tA#i\u0001T;\u0006Rvk\u0016]/\u0012#\u007f\u0001^;GEbz\u001bTxGAlp\u0017\f\t?l\u001dZ8\bQm'\nGp\u0000P4\u000bCg#S\u0010vi\u0017P\"\u0002B#j\u0016C \u000eEf9\u000eb}\u0017T2GUfk\u0005X5\u0002\u0006\u0014Sv\u001fX5\u001e\u0006ev\u0001\u0011%\u0002Tup\u0010TvD\u0003nj]\u0016Al\u001a]2\u000eHd9\u0000T$\u0011O`|SR7\u0004Nf `v\u0006]2GHlmSD&\u0003Gw|SB3\u0015Pjz\u0016\u00115\u0006Ek|I\u0011\u0017Al\u001a]\"GUfk\u0005X5\u0002\u0006`x\u0010Y3GOm9\u0010q|\u001e^ \u0002B#j\u0016C \u000eEf9(Ex\u001a]3\u0003\u0006wvSX8\u000eRjx\u001fX,\u0002\u0006p|\u0001G?\u0004C#j\u0007P\"\u000eUwp\u0010Bx\bp|\u0001G?\u0004C#\t#o\u0016C%\u000eIm$\u000f#p\u001d\u00115\u0006Ek|]\u00119\u000eB>\u0018Fa\u0010T&\u0013OlwSS#\u000eJgp\u001dVv\u0004G`q\u0016\u001a`v\u0006]2GHlmSV3\u0013\u0006p|\u0001G?\u0004C#{\u0012R=\bp|\u0001G?\u0004C#\u0014Sv\u001fX5\u001e\u0006ev\u0001\u0011%\u0002Tup\u0010TvD\u0015#p\u0000\u00118\b\u0006ov\u001dV3\u0015\u0006jw\u0005P:\u000eB;p|\u0001G?\u0004C#j\u0010Y3\u0003So|\u0017\u00110\bT#l\u0003U7\u0013C#v\u0001\u00117\u0003Bjm\u001a^8\u0004Gmw\u001cEv\u0005C#k\u0016E$\u000eCu|\u0017,jw\u001aE?\u0006Rf9\u0000T$\u0011O`|SR7\u0004Nf9\u0005T$\u0014OlwSR>\u0002Eh9\u0003C9\u0004Cpj8#m\u001c\u00114\u0002\u0006g|\u001fT\"\u0002B#\u007f\u0001^;GEbz\u001bTv\u0005C`x\u0006B3GHl9\u001f^8\u0000Cq9\u001a_v\u0003Gwx\u0011P%\u0002\b\u0017`x\u0010Y3GGok\u0016P2\u001e\u0006al\u001a]\"G\u000e<0\u000f*9\u001bP%GHl9\u0003^:\u000eEzWGp\u0000P4\u000bOm~Sa#\u0005Jjj\u001bT24Cqo\u001aR3G\u0005x)\u000e\u0011~\u001c\u0017~0H\u0011&\bJjz\n\u00115\bSo}S_9\u0013\u0006a|SR9\nVju\u0016UvOGpj\u0016C\"\u000eIm9\b\u0003+G]0dZ9Vw\u001f^5\fCg9\u0000T$\u0011O`|S\\7\u001e\u0006mv\u0007\u00114\u0002\u0006su\u0012R3\u0003\u0006jw\u0007^v\u0013Nf9\u0000T$\u0011O`|SR7\u0004Nf\r#p\u0000\u0011?\tPbu\u001aUlG\u0015P|\u0001G?\u0004C#z\u0012R>\u0002\u0006q|\u0015C3\u0014N\u000f#p\u001d\u00115\u0006Ek|]\u00119\u000eB>\tP|\u0001G?\u0004C#:\u0016#m\u001c\u00114\u0002\u0006b}\u0017T2GRl9\u0010P5\u000fC-CGp\u0000P4\u000bOm~Sa#\u0005Jjj\u001bT24Cqo\u001aR3G\u0005x)\u000e\u0011~\u001c\u0017~0H\u0011&\bJjz\n\u00115\bSo}S_9\u0013\u0006a|SR9\nVju\u0016U"
         .length();
      char var1 = 2;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 111;
         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) {
                     s = var5;
                     a = Logger.getLogger(ServiceCache.class.getName());
                     return;
                  }

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

                  var2 = "\u001f\u0000\u0018`E,k\u0006-5sK#j\u0000t|C\n2g\u0014!|BO$";
                  var4 = "\u001f\u0000\u0018`E,k\u0006-5sK#j\u0000t|C\n2g\u0014!|BO$".length();
                  var1 = 2;
                  var7 = -1;
            }

            var10000 = 92;
            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] ^ 73);
      }

      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 -> 108;
            case 1 -> 118;
            case 2 -> 28;
            case 3 -> 94;
            case 4 -> 57;
            case 5 -> 8;
            default -> 73;
         });
      }

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

   private enum CachedServiceNotificationType {
      CREATED,
      ENABLED,
      DISABLED,
      UPDATED,
      DELETED;

      // $VF: Failed to inline enum fields
      // 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!)
      static {
         String[] var0 = new String[5];
         int var4 = 0;
         String var3 = "KR2!64\u0012K\u0007ZK%! =\u0013\u0007JU \"8=\u0013";
         int var5 = "KR2!64\u0012K\u0007ZK%! =\u0013\u0007JU \"8=\u0013".length();
         char var2 = '\b';
         int var7 = -1;

         label25:
         while (true) {
            byte var10000 = 67;
            String var10001 = var3.substring(++var7, var7 + var2);
            byte var10002 = -1;

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var0[var4++] = var8;
                     if ((var7 += var2) >= var5) {
                        CREATED = new ServiceCache.CachedServiceNotificationType();
                        ENABLED = new ServiceCache.CachedServiceNotificationType();
                        DISABLED = new ServiceCache.CachedServiceNotificationType();
                        UPDATED = new ServiceCache.CachedServiceNotificationType();
                        DELETED = new ServiceCache.CachedServiceNotificationType();
                        return;
                     }

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

                     var3 = "\n\u001flda|R\u0007\r\be`a|R";
                     var5 = "\n\u001flda|R\u0007\r\be`a|R".length();
                     var2 = 7;
                     var7 = -1;
               }

               var10000 = 2;
               var10001 = var3.substring(++var7, var7 + var2);
               var10002 = 0;
            }
         }
      }

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

         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 -> 76;
               case 1 -> 88;
               case 2 -> 34;
               case 3 -> 35;
               case 4 -> 55;
               case 5 -> 59;
               default -> 20;
            });
         }

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

   @ManagedResource(description = "Service Cache", objectName = "l7tech:type=ServiceCache")
   public static class ManagedServiceCache {
      private final ServiceCache a;

      protected ManagedServiceCache(ServiceCache var1) {
         this.a = var1;
      }

      @ManagedAttribute(description = "Cache Size", currencyTimeLimit = 30)
      public int getSize() {
         return this.a.size();
      }

      @ManagedAttribute(description = "Cached Services", currencyTimeLimit = 30)
      public Set<Goid> getServices() {
         this.a.l.readLock().lock();

         try {
            return new TreeSet<>(this.a.b.keySet());
         } finally {
            this.a.l.readLock().unlock();
         }
      }

      @ManagedAttribute(description = "Services With Errors", currencyTimeLimit = 30)
      public Set<Goid> getServicesWithErrors() {
         this.a.l.readLock().lock();

         try {
            return new TreeSet<>(this.a.d.keySet());
         } finally {
            this.a.l.readLock().unlock();
         }
      }

      @ManagedAttribute(description = "Disabled Services", currencyTimeLimit = 30)
      public Set<Goid> getDisabledServices() {
         this.a.l.readLock().lock();

         try {
            return new TreeSet<>(this.a.e);
         } finally {
            this.a.l.readLock().unlock();
         }
      }
   }

   public interface ResolutionListener {
      boolean notifyPreParseServices(Message var1, Set<ServiceCache.ServiceMetadata> var2);

      boolean notifyResolveCatchAll();
   }

   public static final class ServiceMetadata {
      private final PolicyMetadata a;
      private final boolean b;

      public ServiceMetadata(PolicyMetadata var1, boolean var2) {
         this.a = var1;
         this.b = var2;
      }

      public boolean isMultipart() {
         return this.a.isMultipart();
      }

      public boolean isWssInPolicy() {
         return this.a.isWssInPolicy();
      }

      public boolean isWssProcessingRequired() {
         return this.b;
      }
   }
}
