public class io.vertx.ext.web.handler.impl.FaviconHandlerImpl implements io.vertx.ext.web.handler.FaviconHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.web.handler.impl.FaviconHandlerImpl
  super_class: java.lang.Object
{
  private static final io.vertx.core.logging.Logger logger;
    descriptor: Lio/vertx/core/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String DEFAULT_VERTX_ICON;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "META-INF/vertx/web/favicon.ico"

  private final io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon NULL_ICON;
    descriptor: Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon icon;
    descriptor: Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
    flags: (0x0002) ACC_PRIVATE

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

  private final long maxAgeSeconds;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            ldc Lio/vertx/ext/web/handler/FaviconHandler;
            invokestatic io.vertx.core.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/logging/Logger;
            putstatic io.vertx.ext.web.handler.impl.FaviconHandlerImpl.logger:Lio/vertx/core/logging/Logger;
         1: .line 41
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String, long);
    descriptor: (Ljava/lang/String;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
        start local 1 // java.lang.String path
        start local 2 // long maxAgeSeconds
         0: .line 107
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            new io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon
            dup
            aload 0 /* this */
            invokespecial io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon.<init>:(Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;)V
            putfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.NULL_ICON:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
         2: .line 108
            aload 0 /* this */
            aload 1 /* path */
            putfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.path:Ljava/lang/String;
         3: .line 109
            aload 0 /* this */
            lload 2 /* maxAgeSeconds */
            putfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.maxAgeSeconds:J
         4: .line 110
            lload 2 /* maxAgeSeconds */
            lconst_0
            lcmp
            ifge 6
         5: .line 111
            new java.lang.IllegalArgumentException
            dup
            ldc "maxAgeSeconds must be > 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 113
      StackMap locals: io.vertx.ext.web.handler.impl.FaviconHandlerImpl java.lang.String long
      StackMap stack:
            return
        end local 2 // long maxAgeSeconds
        end local 1 // java.lang.String path
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;
            0    7     1           path  Ljava/lang/String;
            0    7     2  maxAgeSeconds  J
    MethodParameters:
               Name  Flags
      path           
      maxAgeSeconds  

  public void <init>(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
        start local 1 // long maxAgeSeconds
         0: .line 126
            aload 0 /* this */
            aconst_null
            lload 1 /* maxAgeSeconds */
            invokespecial io.vertx.ext.web.handler.impl.FaviconHandlerImpl.<init>:(Ljava/lang/String;J)V
         1: .line 127
            return
        end local 1 // long maxAgeSeconds
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;
            0    2     1  maxAgeSeconds  J
    MethodParameters:
               Name  Flags
      maxAgeSeconds  

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
        start local 1 // java.lang.String path
         0: .line 140
            aload 0 /* this */
            aload 1 /* path */
            ldc 86400
            invokespecial io.vertx.ext.web.handler.impl.FaviconHandlerImpl.<init>:(Ljava/lang/String;J)V
         1: .line 141
            return
        end local 1 // java.lang.String path
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;
            0    2     1  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
         0: .line 152
            aload 0 /* this */
            aconst_null
            invokespecial io.vertx.ext.web.handler.impl.FaviconHandlerImpl.<init>:(Ljava/lang/String;)V
         1: .line 153
            return
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;

  private io.vertx.core.buffer.Buffer readFile(io.vertx.core.file.FileSystem, java.lang.String);
    descriptor: (Lio/vertx/core/file/FileSystem;Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
        start local 1 // io.vertx.core.file.FileSystem fs
        start local 2 // java.lang.String path
         0: .line 156
            aload 1 /* fs */
            aload 2 /* path */
            invokeinterface io.vertx.core.file.FileSystem.existsBlocking:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 157
            aload 1 /* fs */
            aload 2 /* path */
            invokeinterface io.vertx.core.file.FileSystem.readFileBlocking:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            areturn
         2: .line 159
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* path */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " not found!"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.String path
        end local 1 // io.vertx.core.file.FileSystem fs
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;
            0    3     1    fs  Lio/vertx/core/file/FileSystem;
            0    3     2  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      fs    
      path  

  private void init(io.vertx.core.Vertx);
    descriptor: (Lio/vertx/core/Vertx;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
        start local 1 // io.vertx.core.Vertx vertx
         0: .line 164
            aload 1 /* vertx */
            invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
            astore 2 /* fs */
        start local 2 // io.vertx.core.file.FileSystem fs
         1: .line 166
            aconst_null
            astore 3 /* buffer */
        start local 3 // io.vertx.core.buffer.Buffer buffer
         2: .line 168
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.path:Ljava/lang/String;
            ifnonnull 10
         3: .line 172
            aload 0 /* this */
            aload 2 /* fs */
            ldc "favicon.ico"
            invokevirtual io.vertx.ext.web.handler.impl.FaviconHandlerImpl.readFile:(Lio/vertx/core/file/FileSystem;Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            astore 3 /* buffer */
         4: .line 173
            goto 14
      StackMap locals: io.vertx.ext.web.handler.impl.FaviconHandlerImpl io.vertx.core.Vertx io.vertx.core.file.FileSystem io.vertx.core.buffer.Buffer
      StackMap stack: java.lang.RuntimeException
         5: pop
         6: .line 176
            aload 2 /* fs */
            ldc "META-INF/vertx/web/favicon.ico"
            invokeinterface io.vertx.core.file.FileSystem.readFileBlocking:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            astore 3 /* buffer */
         7: .line 177
            goto 14
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
         8: pop
         9: .line 182
            goto 14
        10: .line 185
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* fs */
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.path:Ljava/lang/String;
            invokevirtual io.vertx.ext.web.handler.impl.FaviconHandlerImpl.readFile:(Lio/vertx/core/file/FileSystem;Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            astore 3 /* buffer */
        11: .line 186
            goto 14
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        12: pop
        13: .line 187
            getstatic io.vertx.ext.web.handler.impl.FaviconHandlerImpl.logger:Lio/vertx/core/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Could not load favicon "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.path:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.vertx.core.logging.Logger.error:(Ljava/lang/Object;)V
        14: .line 192
      StackMap locals:
      StackMap stack:
            aload 3 /* buffer */
            ifnull 17
        15: .line 193
            aload 0 /* this */
            new io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon
            dup
            aload 0 /* this */
            aload 3 /* buffer */
            invokespecial io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon.<init>:(Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;Lio/vertx/core/buffer/Buffer;)V
            putfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.icon:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
        16: .line 194
            goto 18
        17: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.NULL_ICON:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
            putfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.icon:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
        18: .line 197
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.core.buffer.Buffer buffer
        end local 2 // io.vertx.core.file.FileSystem fs
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;
            0   19     1   vertx  Lio/vertx/core/Vertx;
            1   19     2      fs  Lio/vertx/core/file/FileSystem;
            2   19     3  buffer  Lio/vertx/core/buffer/Buffer;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.RuntimeException
           6     7       8  Class java.lang.RuntimeException
          10    11      12  Class java.lang.RuntimeException
    MethodParameters:
       Name  Flags
      vertx  

  public void handle(io.vertx.ext.web.RoutingContext);
    descriptor: (Lio/vertx/ext/web/RoutingContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
        start local 1 // io.vertx.ext.web.RoutingContext ctx
         0: .line 201
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.icon:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
            ifnonnull 2
         1: .line 202
            aload 0 /* this */
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.vertx:()Lio/vertx/core/Vertx;
            invokevirtual io.vertx.ext.web.handler.impl.FaviconHandlerImpl.init:(Lio/vertx/core/Vertx;)V
         2: .line 204
      StackMap locals:
      StackMap stack:
            ldc "/favicon.ico"
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
            invokeinterface io.vertx.core.http.HttpServerRequest.path:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         3: .line 205
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
            astore 2 /* resp */
        start local 2 // io.vertx.core.http.HttpServerResponse resp
         4: .line 206
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.icon:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.NULL_ICON:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
            if_acmpne 7
         5: .line 207
            aload 2 /* resp */
            sipush 404
            invokeinterface io.vertx.core.http.HttpServerResponse.setStatusCode:(I)Lio/vertx/core/http/HttpServerResponse;
            invokeinterface io.vertx.core.http.HttpServerResponse.end:()V
         6: .line 208
            goto 11
         7: .line 209
      StackMap locals: io.vertx.core.http.HttpServerResponse
      StackMap stack:
            aload 2 /* resp */
            invokeinterface io.vertx.core.http.HttpServerResponse.headers:()Lio/vertx/core/MultiMap;
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.icon:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon.headers:Lio/vertx/core/MultiMap;
            invokeinterface io.vertx.core.MultiMap.addAll:(Lio/vertx/core/MultiMap;)Lio/vertx/core/MultiMap;
            pop
         8: .line 210
            aload 2 /* resp */
            aload 0 /* this */
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl.icon:Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl$Icon;
            getfield io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon.body:Lio/vertx/core/buffer/Buffer;
            invokeinterface io.vertx.core.http.HttpServerResponse.end:(Lio/vertx/core/buffer/Buffer;)V
        end local 2 // io.vertx.core.http.HttpServerResponse resp
         9: .line 212
            goto 11
        10: .line 213
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.vertx.ext.web.RoutingContext.next:()V
        11: .line 215
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.ext.web.RoutingContext ctx
        end local 0 // io.vertx.ext.web.handler.impl.FaviconHandlerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lio/vertx/ext/web/handler/impl/FaviconHandlerImpl;
            0   12     1   ctx  Lio/vertx/ext/web/RoutingContext;
            4    9     2  resp  Lio/vertx/core/http/HttpServerResponse;
    MethodParameters:
      Name  Flags
      ctx   

  public void handle(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast io.vertx.ext.web.RoutingContext
            invokevirtual io.vertx.ext.web.handler.impl.FaviconHandlerImpl.handle:(Lio/vertx/ext/web/RoutingContext;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "FaviconHandlerImpl.java"
NestMembers:
  io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon
InnerClasses:
  private Icon = io.vertx.ext.web.handler.impl.FaviconHandlerImpl$Icon of io.vertx.ext.web.handler.impl.FaviconHandlerImpl