public class freemarker.cache.MultiTemplateLoader implements freemarker.cache.StatefulTemplateLoader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: freemarker.cache.MultiTemplateLoader
  super_class: java.lang.Object
{
  private final freemarker.cache.TemplateLoader[] templateLoaders;
    descriptor: [Lfreemarker/cache/TemplateLoader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.String, freemarker.cache.TemplateLoader> lastTemplateLoaderForName;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lfreemarker/cache/TemplateLoader;>;

  private boolean sticky;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public void <init>(freemarker.cache.TemplateLoader[]);
    descriptor: ([Lfreemarker/cache/TemplateLoader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // freemarker.cache.TemplateLoader[] templateLoaders
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 41
            aload 0 /* this */
         2: .line 42
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield freemarker.cache.MultiTemplateLoader.lastTemplateLoaderForName:Ljava/util/Map;
         3: .line 44
            aload 0 /* this */
            iconst_1
            putfield freemarker.cache.MultiTemplateLoader.sticky:Z
         4: .line 54
            ldc "templateLoaders"
            aload 1 /* templateLoaders */
            invokestatic freemarker.template.utility.NullArgumentException.check:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 55
            aload 0 /* this */
            aload 1 /* templateLoaders */
            invokevirtual freemarker.cache.TemplateLoader[].clone:()Ljava/lang/Object;
            checkcast freemarker.cache.TemplateLoader[]
            putfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
         6: .line 56
            return
        end local 1 // freemarker.cache.TemplateLoader[] templateLoaders
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lfreemarker/cache/MultiTemplateLoader;
            0    7     1  templateLoaders  [Lfreemarker/cache/TemplateLoader;
    MethodParameters:
                 Name  Flags
      templateLoaders  

  public java.lang.Object findTemplateSource(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // java.lang.String name
         0: .line 60
            aconst_null
            astore 2 /* lastTemplateLoader */
        start local 2 // freemarker.cache.TemplateLoader lastTemplateLoader
         1: .line 61
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.sticky:Z
            ifeq 7
         2: .line 64
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.lastTemplateLoaderForName:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast freemarker.cache.TemplateLoader
            astore 2 /* lastTemplateLoader */
         3: .line 65
            aload 2 /* lastTemplateLoader */
            ifnull 7
         4: .line 66
            aload 2 /* lastTemplateLoader */
            aload 1 /* name */
            invokeinterface freemarker.cache.TemplateLoader.findTemplateSource:(Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* source */
        start local 3 // java.lang.Object source
         5: .line 67
            aload 3 /* source */
            ifnull 7
         6: .line 68
            new freemarker.cache.MultiTemplateLoader$MultiSource
            dup
            aload 3 /* source */
            aload 2 /* lastTemplateLoader */
            invokespecial freemarker.cache.MultiTemplateLoader$MultiSource.<init>:(Ljava/lang/Object;Lfreemarker/cache/TemplateLoader;)V
            areturn
        end local 3 // java.lang.Object source
         7: .line 77
      StackMap locals: freemarker.cache.TemplateLoader
      StackMap stack:
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 16
      StackMap locals: freemarker.cache.MultiTemplateLoader java.lang.String freemarker.cache.TemplateLoader top int int freemarker.cache.TemplateLoader[]
      StackMap stack:
         8: aload 6
            iload 4
            aaload
            astore 3 /* templateLoader */
        start local 3 // freemarker.cache.TemplateLoader templateLoader
         9: .line 78
            aload 2 /* lastTemplateLoader */
            aload 3 /* templateLoader */
            if_acmpeq 15
        10: .line 79
            aload 3 /* templateLoader */
            aload 1 /* name */
            invokeinterface freemarker.cache.TemplateLoader.findTemplateSource:(Ljava/lang/String;)Ljava/lang/Object;
            astore 7 /* source */
        start local 7 // java.lang.Object source
        11: .line 80
            aload 7 /* source */
            ifnull 15
        12: .line 81
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.sticky:Z
            ifeq 14
        13: .line 82
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.lastTemplateLoaderForName:Ljava/util/Map;
            aload 1 /* name */
            aload 3 /* templateLoader */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 84
      StackMap locals: freemarker.cache.MultiTemplateLoader java.lang.String freemarker.cache.TemplateLoader freemarker.cache.TemplateLoader int int freemarker.cache.TemplateLoader[] java.lang.Object
      StackMap stack:
            new freemarker.cache.MultiTemplateLoader$MultiSource
            dup
            aload 7 /* source */
            aload 3 /* templateLoader */
            invokespecial freemarker.cache.MultiTemplateLoader$MultiSource.<init>:(Ljava/lang/Object;Lfreemarker/cache/TemplateLoader;)V
            areturn
        end local 7 // java.lang.Object source
        end local 3 // freemarker.cache.TemplateLoader templateLoader
        15: .line 77
      StackMap locals: freemarker.cache.MultiTemplateLoader java.lang.String freemarker.cache.TemplateLoader top int int freemarker.cache.TemplateLoader[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        16: iload 4
            iload 5
            if_icmplt 8
        17: .line 89
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.sticky:Z
            ifeq 19
        18: .line 90
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.lastTemplateLoaderForName:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 93
      StackMap locals: freemarker.cache.MultiTemplateLoader java.lang.String freemarker.cache.TemplateLoader
      StackMap stack:
            aconst_null
            areturn
        end local 2 // freemarker.cache.TemplateLoader lastTemplateLoader
        end local 1 // java.lang.String name
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   20     0                this  Lfreemarker/cache/MultiTemplateLoader;
            0   20     1                name  Ljava/lang/String;
            1   20     2  lastTemplateLoader  Lfreemarker/cache/TemplateLoader;
            5    7     3              source  Ljava/lang/Object;
            9   15     3      templateLoader  Lfreemarker/cache/TemplateLoader;
           11   15     7              source  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  public long getLastModified(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // java.lang.Object templateSource
         0: .line 97
            aload 1 /* templateSource */
            checkcast freemarker.cache.MultiTemplateLoader$MultiSource
            invokevirtual freemarker.cache.MultiTemplateLoader$MultiSource.getLastModified:()J
            lreturn
        end local 1 // java.lang.Object templateSource
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lfreemarker/cache/MultiTemplateLoader;
            0    1     1  templateSource  Ljava/lang/Object;
    MethodParameters:
                Name  Flags
      templateSource  

  public java.io.Reader getReader(java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;)Ljava/io/Reader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // java.lang.Object templateSource
        start local 2 // java.lang.String encoding
         0: .line 102
            aload 1 /* templateSource */
            checkcast freemarker.cache.MultiTemplateLoader$MultiSource
            aload 2 /* encoding */
            invokevirtual freemarker.cache.MultiTemplateLoader$MultiSource.getReader:(Ljava/lang/String;)Ljava/io/Reader;
            areturn
        end local 2 // java.lang.String encoding
        end local 1 // java.lang.Object templateSource
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lfreemarker/cache/MultiTemplateLoader;
            0    1     1  templateSource  Ljava/lang/Object;
            0    1     2        encoding  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      templateSource  
      encoding        

  public void closeTemplateSource(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // java.lang.Object templateSource
         0: .line 107
            aload 1 /* templateSource */
            checkcast freemarker.cache.MultiTemplateLoader$MultiSource
            invokevirtual freemarker.cache.MultiTemplateLoader$MultiSource.close:()V
         1: .line 108
            return
        end local 1 // java.lang.Object templateSource
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lfreemarker/cache/MultiTemplateLoader;
            0    2     1  templateSource  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      templateSource  

  public void resetState();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // freemarker.cache.MultiTemplateLoader this
         0: .line 114
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.lastTemplateLoaderForName:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 115
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 6
      StackMap locals: freemarker.cache.MultiTemplateLoader top int int freemarker.cache.TemplateLoader[]
      StackMap stack:
         2: aload 4
            iload 2
            aaload
            astore 1 /* loader */
        start local 1 // freemarker.cache.TemplateLoader loader
         3: .line 116
            aload 1 /* loader */
            instanceof freemarker.cache.StatefulTemplateLoader
            ifeq 5
         4: .line 117
            aload 1 /* loader */
            checkcast freemarker.cache.StatefulTemplateLoader
            invokeinterface freemarker.cache.StatefulTemplateLoader.resetState:()V
        end local 1 // freemarker.cache.TemplateLoader loader
         5: .line 115
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         6: iload 2
            iload 3
            if_icmplt 2
         7: .line 120
            return
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lfreemarker/cache/MultiTemplateLoader;
            3    5     1  loader  Lfreemarker/cache/TemplateLoader;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // freemarker.cache.MultiTemplateLoader this
         0: .line 181
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 182
            aload 1 /* sb */
            ldc "MultiTemplateLoader("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 183
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         3: goto 8
         4: .line 184
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            iload 2 /* i */
            ifeq 6
         5: .line 185
            aload 1 /* sb */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 187
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "loader"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 2 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
            iload 2 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         7: .line 183
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
            arraylength
            if_icmplt 4
        end local 2 // int i
         9: .line 189
            aload 1 /* sb */
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 190
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lfreemarker/cache/MultiTemplateLoader;
            1   11     1    sb  Ljava/lang/StringBuilder;
            3    9     2     i  I

  public int getTemplateLoaderCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.cache.MultiTemplateLoader this
         0: .line 199
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
            arraylength
            ireturn
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/cache/MultiTemplateLoader;

  public freemarker.cache.TemplateLoader getTemplateLoader(int);
    descriptor: (I)Lfreemarker/cache/TemplateLoader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // int index
         0: .line 209
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.templateLoaders:[Lfreemarker/cache/TemplateLoader;
            iload 1 /* index */
            aaload
            areturn
        end local 1 // int index
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lfreemarker/cache/MultiTemplateLoader;
            0    1     1  index  I
    MethodParameters:
       Name  Flags
      index  

  public boolean isSticky();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.cache.MultiTemplateLoader this
         0: .line 218
            aload 0 /* this */
            getfield freemarker.cache.MultiTemplateLoader.sticky:Z
            ireturn
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/cache/MultiTemplateLoader;

  public void setSticky(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.cache.MultiTemplateLoader this
        start local 1 // boolean sticky
         0: .line 229
            aload 0 /* this */
            iload 1 /* sticky */
            putfield freemarker.cache.MultiTemplateLoader.sticky:Z
         1: .line 230
            return
        end local 1 // boolean sticky
        end local 0 // freemarker.cache.MultiTemplateLoader this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lfreemarker/cache/MultiTemplateLoader;
            0    2     1  sticky  Z
    MethodParameters:
        Name  Flags
      sticky  
}
SourceFile: "MultiTemplateLoader.java"
NestMembers:
  freemarker.cache.MultiTemplateLoader$MultiSource
InnerClasses:
  final MultiSource = freemarker.cache.MultiTemplateLoader$MultiSource of freemarker.cache.MultiTemplateLoader