public class org.aspectj.weaver.tools.cache.WeavedClassCache
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.aspectj.weaver.tools.cache.WeavedClassCache
  super_class: java.lang.Object
{
  public static final java.lang.String WEAVED_CLASS_CACHE_ENABLED;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "aj.weaving.cache.enabled"

  public static final java.lang.String CACHE_IMPL;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "aj.weaving.cache.impl"

  private static org.aspectj.weaver.tools.cache.CacheFactory DEFAULT_FACTORY;
    descriptor: Lorg/aspectj/weaver/tools/cache/CacheFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  public static final byte[] ZERO_BYTES;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private final org.aspectj.bridge.IMessageHandler messageHandler;
    descriptor: Lorg/aspectj/bridge/IMessageHandler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.aspectj.weaver.tools.cache.GeneratedCachedClassHandler cachingClassHandler;
    descriptor: Lorg/aspectj/weaver/tools/cache/GeneratedCachedClassHandler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.aspectj.weaver.tools.cache.CacheBacking backing;
    descriptor: Lorg/aspectj/weaver/tools/cache/CacheBacking;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.aspectj.weaver.tools.cache.CacheStatistics stats;
    descriptor: Lorg/aspectj/weaver/tools/cache/CacheStatistics;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.aspectj.weaver.tools.cache.CacheKeyResolver resolver;
    descriptor: Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final java.util.List<org.aspectj.weaver.tools.cache.WeavedClassCache> cacheRegistry;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Lorg/aspectj/weaver/tools/cache/WeavedClassCache;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 72
            new org.aspectj.weaver.tools.cache.DefaultCacheFactory
            dup
            invokespecial org.aspectj.weaver.tools.cache.DefaultCacheFactory.<init>:()V
            putstatic org.aspectj.weaver.tools.cache.WeavedClassCache.DEFAULT_FACTORY:Lorg/aspectj/weaver/tools/cache/CacheFactory;
         1: .line 73
            iconst_0
            newarray 8
            putstatic org.aspectj.weaver.tools.cache.WeavedClassCache.ZERO_BYTES:[B
         2: .line 81
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putstatic org.aspectj.weaver.tools.cache.WeavedClassCache.cacheRegistry:Ljava/util/List;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(org.aspectj.weaver.tools.GeneratedClassHandler, org.aspectj.bridge.IMessageHandler, java.lang.String, org.aspectj.weaver.tools.cache.CacheBacking, org.aspectj.weaver.tools.cache.CacheKeyResolver);
    descriptor: (Lorg/aspectj/weaver/tools/GeneratedClassHandler;Lorg/aspectj/bridge/IMessageHandler;Ljava/lang/String;Lorg/aspectj/weaver/tools/cache/CacheBacking;Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=6
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // org.aspectj.weaver.tools.GeneratedClassHandler existingClassHandler
        start local 2 // org.aspectj.bridge.IMessageHandler messageHandler
        start local 3 // java.lang.String name
        start local 4 // org.aspectj.weaver.tools.cache.CacheBacking backing
        start local 5 // org.aspectj.weaver.tools.cache.CacheKeyResolver resolver
         0: .line 83
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 88
            aload 0 /* this */
            aload 5 /* resolver */
            putfield org.aspectj.weaver.tools.cache.WeavedClassCache.resolver:Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
         2: .line 89
            aload 0 /* this */
            aload 3 /* name */
            putfield org.aspectj.weaver.tools.cache.WeavedClassCache.name:Ljava/lang/String;
         3: .line 90
            aload 0 /* this */
            aload 4 /* backing */
            putfield org.aspectj.weaver.tools.cache.WeavedClassCache.backing:Lorg/aspectj/weaver/tools/cache/CacheBacking;
         4: .line 91
            aload 0 /* this */
            aload 2 /* messageHandler */
            putfield org.aspectj.weaver.tools.cache.WeavedClassCache.messageHandler:Lorg/aspectj/bridge/IMessageHandler;
         5: .line 93
            aload 0 /* this */
            new org.aspectj.weaver.tools.cache.GeneratedCachedClassHandler
            dup
            aload 0 /* this */
            aload 1 /* existingClassHandler */
            invokespecial org.aspectj.weaver.tools.cache.GeneratedCachedClassHandler.<init>:(Lorg/aspectj/weaver/tools/cache/WeavedClassCache;Lorg/aspectj/weaver/tools/GeneratedClassHandler;)V
            putfield org.aspectj.weaver.tools.cache.WeavedClassCache.cachingClassHandler:Lorg/aspectj/weaver/tools/cache/GeneratedCachedClassHandler;
         6: .line 94
            aload 0 /* this */
            new org.aspectj.weaver.tools.cache.CacheStatistics
            dup
            invokespecial org.aspectj.weaver.tools.cache.CacheStatistics.<init>:()V
            putfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
         7: .line 95
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.cacheRegistry:Ljava/util/List;
            dup
            astore 6
            monitorenter
         8: .line 96
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.cacheRegistry:Ljava/util/List;
            aload 0 /* this */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 95
            aload 6
            monitorexit
        10: goto 13
      StackMap locals: org.aspectj.weaver.tools.cache.WeavedClassCache org.aspectj.weaver.tools.GeneratedClassHandler org.aspectj.bridge.IMessageHandler java.lang.String org.aspectj.weaver.tools.cache.CacheBacking org.aspectj.weaver.tools.cache.CacheKeyResolver java.util.List
      StackMap stack: java.lang.Throwable
        11: aload 6
            monitorexit
        12: athrow
        13: .line 98
      StackMap locals:
      StackMap stack:
            return
        end local 5 // org.aspectj.weaver.tools.cache.CacheKeyResolver resolver
        end local 4 // org.aspectj.weaver.tools.cache.CacheBacking backing
        end local 3 // java.lang.String name
        end local 2 // org.aspectj.bridge.IMessageHandler messageHandler
        end local 1 // org.aspectj.weaver.tools.GeneratedClassHandler existingClassHandler
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0                  this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0   14     1  existingClassHandler  Lorg/aspectj/weaver/tools/GeneratedClassHandler;
            0   14     2        messageHandler  Lorg/aspectj/bridge/IMessageHandler;
            0   14     3                  name  Ljava/lang/String;
            0   14     4               backing  Lorg/aspectj/weaver/tools/cache/CacheBacking;
            0   14     5              resolver  Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
      Exception table:
        from    to  target  type
           8    10      11  any
          11    12      11  any
    MethodParameters:
                      Name  Flags
      existingClassHandler  
      messageHandler        
      name                  
      backing               
      resolver              

  public static org.aspectj.weaver.tools.cache.WeavedClassCache createCache(java.lang.ClassLoader, java.util.List<java.lang.String>, org.aspectj.weaver.tools.GeneratedClassHandler, org.aspectj.bridge.IMessageHandler);
    descriptor: (Ljava/lang/ClassLoader;Ljava/util/List;Lorg/aspectj/weaver/tools/GeneratedClassHandler;Lorg/aspectj/bridge/IMessageHandler;)Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=7, args_size=4
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.util.List aspects
        start local 2 // org.aspectj.weaver.tools.GeneratedClassHandler existingClassHandler
        start local 3 // org.aspectj.bridge.IMessageHandler messageHandler
         0: .line 110
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.DEFAULT_FACTORY:Lorg/aspectj/weaver/tools/cache/CacheFactory;
            invokeinterface org.aspectj.weaver.tools.cache.CacheFactory.createResolver:()Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
            astore 4 /* resolver */
        start local 4 // org.aspectj.weaver.tools.cache.CacheKeyResolver resolver
         1: .line 111
            aload 4 /* resolver */
            aload 0 /* loader */
            aload 1 /* aspects */
            invokeinterface org.aspectj.weaver.tools.cache.CacheKeyResolver.createClassLoaderScope:(Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/String;
            astore 5 /* name */
        start local 5 // java.lang.String name
         2: .line 112
            aload 5 /* name */
            ifnonnull 4
         3: .line 113
            aconst_null
            areturn
         4: .line 115
      StackMap locals: org.aspectj.weaver.tools.cache.CacheKeyResolver java.lang.String
      StackMap stack:
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.DEFAULT_FACTORY:Lorg/aspectj/weaver/tools/cache/CacheFactory;
            aload 5 /* name */
            invokeinterface org.aspectj.weaver.tools.cache.CacheFactory.createBacking:(Ljava/lang/String;)Lorg/aspectj/weaver/tools/cache/CacheBacking;
            astore 6 /* backing */
        start local 6 // org.aspectj.weaver.tools.cache.CacheBacking backing
         5: .line 116
            aload 6 /* backing */
            ifnull 7
         6: .line 117
            new org.aspectj.weaver.tools.cache.WeavedClassCache
            dup
            aload 2 /* existingClassHandler */
            aload 3 /* messageHandler */
            aload 5 /* name */
            aload 6 /* backing */
            aload 4 /* resolver */
            invokespecial org.aspectj.weaver.tools.cache.WeavedClassCache.<init>:(Lorg/aspectj/weaver/tools/GeneratedClassHandler;Lorg/aspectj/bridge/IMessageHandler;Ljava/lang/String;Lorg/aspectj/weaver/tools/cache/CacheBacking;Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;)V
            areturn
         7: .line 119
      StackMap locals: org.aspectj.weaver.tools.cache.CacheBacking
      StackMap stack:
            aconst_null
            areturn
        end local 6 // org.aspectj.weaver.tools.cache.CacheBacking backing
        end local 5 // java.lang.String name
        end local 4 // org.aspectj.weaver.tools.cache.CacheKeyResolver resolver
        end local 3 // org.aspectj.bridge.IMessageHandler messageHandler
        end local 2 // org.aspectj.weaver.tools.GeneratedClassHandler existingClassHandler
        end local 1 // java.util.List aspects
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    8     0                loader  Ljava/lang/ClassLoader;
            0    8     1               aspects  Ljava/util/List<Ljava/lang/String;>;
            0    8     2  existingClassHandler  Lorg/aspectj/weaver/tools/GeneratedClassHandler;
            0    8     3        messageHandler  Lorg/aspectj/bridge/IMessageHandler;
            1    8     4              resolver  Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
            2    8     5                  name  Ljava/lang/String;
            5    8     6               backing  Lorg/aspectj/weaver/tools/cache/CacheBacking;
    Signature: (Ljava/lang/ClassLoader;Ljava/util/List<Ljava/lang/String;>;Lorg/aspectj/weaver/tools/GeneratedClassHandler;Lorg/aspectj/bridge/IMessageHandler;)Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
    MethodParameters:
                      Name  Flags
      loader                
      aspects               
      existingClassHandler  
      messageHandler        

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
         0: .line 123
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.name:Ljava/lang/String;
            areturn
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;

  public static void setDefaultCacheFactory(org.aspectj.weaver.tools.cache.CacheFactory);
    descriptor: (Lorg/aspectj/weaver/tools/cache/CacheFactory;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.aspectj.weaver.tools.cache.CacheFactory factory
         0: .line 135
            aload 0 /* factory */
            putstatic org.aspectj.weaver.tools.cache.WeavedClassCache.DEFAULT_FACTORY:Lorg/aspectj/weaver/tools/cache/CacheFactory;
         1: .line 136
            return
        end local 0 // org.aspectj.weaver.tools.cache.CacheFactory factory
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  factory  Lorg/aspectj/weaver/tools/cache/CacheFactory;
    MethodParameters:
         Name  Flags
      factory  

  public org.aspectj.weaver.tools.cache.CachedClassReference createGeneratedCacheKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/aspectj/weaver/tools/cache/CachedClassReference;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // java.lang.String className
         0: .line 145
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.resolver:Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
            aload 1 /* className */
            invokeinterface org.aspectj.weaver.tools.cache.CacheKeyResolver.generatedKey:(Ljava/lang/String;)Lorg/aspectj/weaver/tools/cache/CachedClassReference;
            areturn
        end local 1 // java.lang.String className
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    1     1  className  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      className  

  public org.aspectj.weaver.tools.cache.CachedClassReference createCacheKey(java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;[B)Lorg/aspectj/weaver/tools/cache/CachedClassReference;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // java.lang.String className
        start local 2 // byte[] originalBytes
         0: .line 156
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.resolver:Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
            aload 1 /* className */
            aload 2 /* originalBytes */
            invokeinterface org.aspectj.weaver.tools.cache.CacheKeyResolver.weavedKey:(Ljava/lang/String;[B)Lorg/aspectj/weaver/tools/cache/CachedClassReference;
            areturn
        end local 2 // byte[] originalBytes
        end local 1 // java.lang.String className
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    1     1      className  Ljava/lang/String;
            0    1     2  originalBytes  [B
    MethodParameters:
               Name  Flags
      className      
      originalBytes  

  public org.aspectj.weaver.tools.GeneratedClassHandler getCachingClassHandler();
    descriptor: ()Lorg/aspectj/weaver/tools/GeneratedClassHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
         0: .line 165
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.cachingClassHandler:Lorg/aspectj/weaver/tools/cache/GeneratedCachedClassHandler;
            areturn
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;

  public static boolean isEnabled();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 175
            ldc "aj.weaving.cache.enabled"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* enabled */
        start local 0 // java.lang.String enabled
         1: .line 176
            ldc "aj.weaving.cache.impl"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* impl */
        start local 1 // java.lang.String impl
         2: .line 177
            aload 0 /* enabled */
            ifnull 4
            aload 1 /* impl */
            ifnull 3
            ldc "shared"
            aload 1 /* impl */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 4
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
         3: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 1 // java.lang.String impl
        end local 0 // java.lang.String enabled
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            1    5     0  enabled  Ljava/lang/String;
            2    5     1     impl  Ljava/lang/String;

  public void put(org.aspectj.weaver.tools.cache.CachedClassReference, byte[], byte[]);
    descriptor: (Lorg/aspectj/weaver/tools/cache/CachedClassReference;[B[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        start local 2 // byte[] classBytes
        start local 3 // byte[] weavedBytes
         0: .line 188
            getstatic org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType.WEAVED:Lorg/aspectj/weaver/tools/cache/CachedClassEntry$EntryType;
            astore 4 /* type */
        start local 4 // org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType type
         1: .line 189
            aload 1 /* ref */
            invokevirtual org.aspectj.weaver.tools.cache.CachedClassReference.getKey:()Ljava/lang/String;
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.resolver:Lorg/aspectj/weaver/tools/cache/CacheKeyResolver;
            invokeinterface org.aspectj.weaver.tools.cache.CacheKeyResolver.getGeneratedRegex:()Ljava/lang/String;
            invokevirtual java.lang.String.matches:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 190
            getstatic org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType.GENERATED:Lorg/aspectj/weaver/tools/cache/CachedClassEntry$EntryType;
            astore 4 /* type */
         3: .line 192
      StackMap locals: org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType
      StackMap stack:
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.backing:Lorg/aspectj/weaver/tools/cache/CacheBacking;
            new org.aspectj.weaver.tools.cache.CachedClassEntry
            dup
            aload 1 /* ref */
            aload 3 /* weavedBytes */
            aload 4 /* type */
            invokespecial org.aspectj.weaver.tools.cache.CachedClassEntry.<init>:(Lorg/aspectj/weaver/tools/cache/CachedClassReference;[BLorg/aspectj/weaver/tools/cache/CachedClassEntry$EntryType;)V
            aload 2 /* classBytes */
            invokeinterface org.aspectj.weaver.tools.cache.CacheBacking.put:(Lorg/aspectj/weaver/tools/cache/CachedClassEntry;[B)V
         4: .line 193
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.put:()V
         5: .line 194
            return
        end local 4 // org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType type
        end local 3 // byte[] weavedBytes
        end local 2 // byte[] classBytes
        end local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    6     1          ref  Lorg/aspectj/weaver/tools/cache/CachedClassReference;
            0    6     2   classBytes  [B
            0    6     3  weavedBytes  [B
            1    6     4         type  Lorg/aspectj/weaver/tools/cache/CachedClassEntry$EntryType;
    MethodParameters:
             Name  Flags
      ref          
      classBytes   
      weavedBytes  

  public org.aspectj.weaver.tools.cache.CachedClassEntry get(org.aspectj.weaver.tools.cache.CachedClassReference, byte[]);
    descriptor: (Lorg/aspectj/weaver/tools/cache/CachedClassReference;[B)Lorg/aspectj/weaver/tools/cache/CachedClassEntry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        start local 2 // byte[] classBytes
         0: .line 205
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.backing:Lorg/aspectj/weaver/tools/cache/CacheBacking;
            aload 1 /* ref */
            aload 2 /* classBytes */
            invokeinterface org.aspectj.weaver.tools.cache.CacheBacking.get:(Lorg/aspectj/weaver/tools/cache/CachedClassReference;[B)Lorg/aspectj/weaver/tools/cache/CachedClassEntry;
            astore 3 /* entry */
        start local 3 // org.aspectj.weaver.tools.cache.CachedClassEntry entry
         1: .line 206
            aload 3 /* entry */
            ifnonnull 4
         2: .line 207
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.miss:()V
         3: .line 208
            goto 8
         4: .line 209
      StackMap locals: org.aspectj.weaver.tools.cache.CachedClassEntry
      StackMap stack:
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.hit:()V
         5: .line 210
            aload 3 /* entry */
            invokevirtual org.aspectj.weaver.tools.cache.CachedClassEntry.isGenerated:()Z
            ifeq 6
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.generated:()V
         6: .line 211
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            invokevirtual org.aspectj.weaver.tools.cache.CachedClassEntry.isWeaved:()Z
            ifeq 7
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.weaved:()V
         7: .line 212
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            invokevirtual org.aspectj.weaver.tools.cache.CachedClassEntry.isIgnored:()Z
            ifeq 8
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.ignored:()V
         8: .line 214
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            areturn
        end local 3 // org.aspectj.weaver.tools.cache.CachedClassEntry entry
        end local 2 // byte[] classBytes
        end local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    9     1         ref  Lorg/aspectj/weaver/tools/cache/CachedClassReference;
            0    9     2  classBytes  [B
            1    9     3       entry  Lorg/aspectj/weaver/tools/cache/CachedClassEntry;
    MethodParameters:
            Name  Flags
      ref         
      classBytes  

  public void ignore(org.aspectj.weaver.tools.cache.CachedClassReference, byte[]);
    descriptor: (Lorg/aspectj/weaver/tools/cache/CachedClassReference;[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        start local 2 // byte[] classBytes
         0: .line 225
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            invokevirtual org.aspectj.weaver.tools.cache.CacheStatistics.putIgnored:()V
         1: .line 226
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.backing:Lorg/aspectj/weaver/tools/cache/CacheBacking;
            new org.aspectj.weaver.tools.cache.CachedClassEntry
            dup
            aload 1 /* ref */
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.ZERO_BYTES:[B
            getstatic org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType.IGNORED:Lorg/aspectj/weaver/tools/cache/CachedClassEntry$EntryType;
            invokespecial org.aspectj.weaver.tools.cache.CachedClassEntry.<init>:(Lorg/aspectj/weaver/tools/cache/CachedClassReference;[BLorg/aspectj/weaver/tools/cache/CachedClassEntry$EntryType;)V
            aload 2 /* classBytes */
            invokeinterface org.aspectj.weaver.tools.cache.CacheBacking.put:(Lorg/aspectj/weaver/tools/cache/CachedClassEntry;[B)V
         2: .line 227
            return
        end local 2 // byte[] classBytes
        end local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    3     1         ref  Lorg/aspectj/weaver/tools/cache/CachedClassReference;
            0    3     2  classBytes  [B
    MethodParameters:
            Name  Flags
      ref         
      classBytes  

  public void remove(org.aspectj.weaver.tools.cache.CachedClassReference);
    descriptor: (Lorg/aspectj/weaver/tools/cache/CachedClassReference;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
         0: .line 235
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.backing:Lorg/aspectj/weaver/tools/cache/CacheBacking;
            aload 1 /* ref */
            invokeinterface org.aspectj.weaver.tools.cache.CacheBacking.remove:(Lorg/aspectj/weaver/tools/cache/CachedClassReference;)V
         1: .line 236
            return
        end local 1 // org.aspectj.weaver.tools.cache.CachedClassReference ref
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    2     1   ref  Lorg/aspectj/weaver/tools/cache/CachedClassReference;
    MethodParameters:
      Name  Flags
      ref   

  public void clear();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
         0: .line 242
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.backing:Lorg/aspectj/weaver/tools/cache/CacheBacking;
            invokeinterface org.aspectj.weaver.tools.cache.CacheBacking.clear:()V
         1: .line 243
            return
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;

  public org.aspectj.weaver.tools.cache.CacheStatistics getStats();
    descriptor: ()Lorg/aspectj/weaver/tools/cache/CacheStatistics;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
         0: .line 252
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.stats:Lorg/aspectj/weaver/tools/cache/CacheStatistics;
            areturn
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;

  public static java.util.List<org.aspectj.weaver.tools.cache.WeavedClassCache> getCaches();
    descriptor: ()Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 261
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.cacheRegistry:Ljava/util/List;
            dup
            astore 0
            monitorenter
         1: .line 262
            new java.util.LinkedList
            dup
            getstatic org.aspectj.weaver.tools.cache.WeavedClassCache.cacheRegistry:Ljava/util/List;
            invokespecial java.util.LinkedList.<init>:(Ljava/util/Collection;)V
            aload 0
            monitorexit
         2: areturn
         3: .line 261
      StackMap locals: java.util.List
      StackMap stack: java.lang.Throwable
            aload 0
            monitorexit
         4: athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any
    Signature: ()Ljava/util/List<Lorg/aspectj/weaver/tools/cache/WeavedClassCache;>;

  protected void error(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // java.lang.String message
        start local 2 // java.lang.Throwable th
         0: .line 267
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.messageHandler:Lorg/aspectj/bridge/IMessageHandler;
            new org.aspectj.bridge.Message
            dup
            aload 1 /* message */
            getstatic org.aspectj.bridge.IMessage.ERROR:Lorg/aspectj/bridge/IMessage$Kind;
            aload 2 /* th */
            aconst_null
            invokespecial org.aspectj.bridge.Message.<init>:(Ljava/lang/String;Lorg/aspectj/bridge/IMessage$Kind;Ljava/lang/Throwable;Lorg/aspectj/bridge/ISourceLocation;)V
            invokeinterface org.aspectj.bridge.IMessageHandler.handleMessage:(Lorg/aspectj/bridge/IMessage;)Z
            pop
         1: .line 268
            return
        end local 2 // java.lang.Throwable th
        end local 1 // java.lang.String message
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    2     1  message  Ljava/lang/String;
            0    2     2       th  Ljava/lang/Throwable;
    MethodParameters:
         Name  Flags
      message  
      th       

  protected void error(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // java.lang.String message
         0: .line 271
            aload 0 /* this */
            getfield org.aspectj.weaver.tools.cache.WeavedClassCache.messageHandler:Lorg/aspectj/bridge/IMessageHandler;
            aload 1 /* message */
            invokestatic org.aspectj.bridge.MessageUtil.error:(Lorg/aspectj/bridge/IMessageHandler;Ljava/lang/String;)Z
            pop
         1: .line 272
            return
        end local 1 // java.lang.String message
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    2     1  message  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      message  

  protected void info(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
        start local 1 // java.lang.String message
         0: .line 275
            aload 1 /* message */
            invokestatic org.aspectj.bridge.MessageUtil.info:(Ljava/lang/String;)Lorg/aspectj/bridge/IMessage;
            pop
         1: .line 276
            return
        end local 1 // java.lang.String message
        end local 0 // org.aspectj.weaver.tools.cache.WeavedClassCache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/aspectj/weaver/tools/cache/WeavedClassCache;
            0    2     1  message  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      message  
}
SourceFile: "WeavedClassCache.java"
InnerClasses:
  public final Kind = org.aspectj.bridge.IMessage$Kind of org.aspectj.bridge.IMessage
  final EntryType = org.aspectj.weaver.tools.cache.CachedClassEntry$EntryType of org.aspectj.weaver.tools.cache.CachedClassEntry