public class org.springframework.ui.freemarker.SpringTemplateLoader implements freemarker.cache.TemplateLoader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.ui.freemarker.SpringTemplateLoader
  super_class: java.lang.Object
{
  protected final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final org.springframework.core.io.ResourceLoader resourceLoader;
    descriptor: Lorg/springframework/core/io/ResourceLoader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  public void <init>(org.springframework.core.io.ResourceLoader, java.lang.String);
    descriptor: (Lorg/springframework/core/io/ResourceLoader;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
        start local 1 // org.springframework.core.io.ResourceLoader resourceLoader
        start local 2 // java.lang.String templateLoaderPath
         0: .line 55
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
         2: .line 56
            aload 0 /* this */
            aload 1 /* resourceLoader */
            putfield org.springframework.ui.freemarker.SpringTemplateLoader.resourceLoader:Lorg/springframework/core/io/ResourceLoader;
         3: .line 57
            aload 2 /* templateLoaderPath */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 5
         4: .line 58
            new java.lang.StringBuilder
            dup
            aload 2 /* templateLoaderPath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* templateLoaderPath */
         5: .line 60
      StackMap locals: org.springframework.ui.freemarker.SpringTemplateLoader org.springframework.core.io.ResourceLoader java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* templateLoaderPath */
            putfield org.springframework.ui.freemarker.SpringTemplateLoader.templateLoaderPath:Ljava/lang/String;
         6: .line 61
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 10
         7: .line 62
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "SpringTemplateLoader for FreeMarker: using resource loader ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.resourceLoader:Lorg/springframework/core/io/ResourceLoader;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         8: .line 63
            ldc "] and template loader path ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.templateLoaderPath:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 62
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        10: .line 65
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String templateLoaderPath
        end local 1 // org.springframework.core.io.ResourceLoader resourceLoader
        end local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   11     0                this  Lorg/springframework/ui/freemarker/SpringTemplateLoader;
            0   11     1      resourceLoader  Lorg/springframework/core/io/ResourceLoader;
            0   11     2  templateLoaderPath  Ljava/lang/String;
    MethodParameters:
                    Name  Flags
      resourceLoader      
      templateLoaderPath  

  public java.lang.Object findTemplateSource(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
        start local 1 // java.lang.String name
         0: .line 71
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 2
         1: .line 72
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Looking for FreeMarker template with name ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         2: .line 74
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.resourceLoader:Lorg/springframework/core/io/ResourceLoader;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.templateLoaderPath:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.springframework.core.io.ResourceLoader.getResource:(Ljava/lang/String;)Lorg/springframework/core/io/Resource;
            astore 2 /* resource */
        start local 2 // org.springframework.core.io.Resource resource
         3: .line 75
            aload 2 /* resource */
            invokeinterface org.springframework.core.io.Resource.exists:()Z
            ifeq 4
            aload 2 /* resource */
            goto 5
      StackMap locals: org.springframework.core.io.Resource
      StackMap stack:
         4: aconst_null
      StackMap locals:
      StackMap stack: org.springframework.core.io.Resource
         5: areturn
        end local 2 // org.springframework.core.io.Resource resource
        end local 1 // java.lang.String name
        end local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/springframework/ui/freemarker/SpringTemplateLoader;
            0    6     1      name  Ljava/lang/String;
            3    6     2  resource  Lorg/springframework/core/io/Resource;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      name  

  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=4, locals=5, args_size=3
        start local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
        start local 1 // java.lang.Object templateSource
        start local 2 // java.lang.String encoding
         0: .line 80
            aload 1 /* templateSource */
            checkcast org.springframework.core.io.Resource
            astore 3 /* resource */
        start local 3 // org.springframework.core.io.Resource resource
         1: .line 82
            new java.io.InputStreamReader
            dup
            aload 3 /* resource */
            invokeinterface org.springframework.core.io.Resource.getInputStream:()Ljava/io/InputStream;
            aload 2 /* encoding */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
         2: areturn
         3: .line 84
      StackMap locals: org.springframework.ui.freemarker.SpringTemplateLoader java.lang.Object java.lang.String org.springframework.core.io.Resource
      StackMap stack: java.io.IOException
            astore 4 /* ex */
        start local 4 // java.io.IOException ex
         4: .line 85
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 6
         5: .line 86
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Could not find FreeMarker template: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* resource */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         6: .line 88
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 4 /* ex */
            athrow
        end local 4 // java.io.IOException ex
        end local 3 // org.springframework.core.io.Resource resource
        end local 2 // java.lang.String encoding
        end local 1 // java.lang.Object templateSource
        end local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lorg/springframework/ui/freemarker/SpringTemplateLoader;
            0    7     1  templateSource  Ljava/lang/Object;
            0    7     2        encoding  Ljava/lang/String;
            1    7     3        resource  Lorg/springframework/core/io/Resource;
            4    7     4              ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      templateSource  
      encoding        

  public long getLastModified(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
        start local 1 // java.lang.Object templateSource
         0: .line 94
            aload 1 /* templateSource */
            checkcast org.springframework.core.io.Resource
            astore 2 /* resource */
        start local 2 // org.springframework.core.io.Resource resource
         1: .line 96
            aload 2 /* resource */
            invokeinterface org.springframework.core.io.Resource.lastModified:()J
         2: lreturn
         3: .line 98
      StackMap locals: org.springframework.ui.freemarker.SpringTemplateLoader java.lang.Object org.springframework.core.io.Resource
      StackMap stack: java.io.IOException
            astore 3 /* ex */
        start local 3 // java.io.IOException ex
         4: .line 99
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 8
         5: .line 100
            aload 0 /* this */
            getfield org.springframework.ui.freemarker.SpringTemplateLoader.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Could not obtain last-modified timestamp for FreeMarker template in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 101
            aload 2 /* resource */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 100
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         8: .line 103
      StackMap locals: java.io.IOException
      StackMap stack:
            ldc -1
            lreturn
        end local 3 // java.io.IOException ex
        end local 2 // org.springframework.core.io.Resource resource
        end local 1 // java.lang.Object templateSource
        end local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/springframework/ui/freemarker/SpringTemplateLoader;
            0    9     1  templateSource  Ljava/lang/Object;
            1    9     2        resource  Lorg/springframework/core/io/Resource;
            4    9     3              ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    MethodParameters:
                Name  Flags
      templateSource  

  public void closeTemplateSource(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
        start local 1 // java.lang.Object templateSource
         0: .line 109
            return
        end local 1 // java.lang.Object templateSource
        end local 0 // org.springframework.ui.freemarker.SpringTemplateLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lorg/springframework/ui/freemarker/SpringTemplateLoader;
            0    1     1  templateSource  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      templateSource  
}
SourceFile: "SpringTemplateLoader.java"