public class org.glassfish.grizzly.http.server.DefaultSessionManager implements org.glassfish.grizzly.http.server.SessionManager
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.http.server.DefaultSessionManager
  super_class: java.lang.Object
{
  private final java.util.concurrent.ConcurrentMap<java.lang.String, org.glassfish.grizzly.http.server.Session> sessions;
    descriptor: Ljava/util/concurrent/ConcurrentMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Lorg/glassfish/grizzly/http/server/Session;>;

  private final java.util.Random rnd;
    descriptor: Ljava/util/Random;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String sessionCookieName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.concurrent.ScheduledThreadPoolExecutor sessionExpirer;
    descriptor: Ljava/util/concurrent/ScheduledThreadPoolExecutor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public static org.glassfish.grizzly.http.server.SessionManager instance();
    descriptor: ()Lorg/glassfish/grizzly/http/server/SessionManager;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            getstatic org.glassfish.grizzly.http.server.DefaultSessionManager$LazyHolder.INSTANCE:Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
         0: .line 90
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessions:Ljava/util/concurrent/ConcurrentMap;
         2: .line 53
            aload 0 /* this */
            new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
            putfield org.glassfish.grizzly.http.server.DefaultSessionManager.rnd:Ljava/util/Random;
         3: .line 55
            aload 0 /* this */
            ldc "JSESSIONID"
            putfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessionCookieName:Ljava/lang/String;
         4: .line 60
            aload 0 /* this */
            new java.util.concurrent.ScheduledThreadPoolExecutor
            dup
            iconst_1
            new org.glassfish.grizzly.http.server.DefaultSessionManager$1
            dup
            aload 0 /* this */
            invokespecial org.glassfish.grizzly.http.server.DefaultSessionManager$1.<init>:(Lorg/glassfish/grizzly/http/server/DefaultSessionManager;)V
            invokespecial java.util.concurrent.ScheduledThreadPoolExecutor.<init>:(ILjava/util/concurrent/ThreadFactory;)V
            putfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessionExpirer:Ljava/util/concurrent/ScheduledThreadPoolExecutor;
         5: .line 70
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessionExpirer:Ljava/util/concurrent/ScheduledThreadPoolExecutor;
            new org.glassfish.grizzly.http.server.DefaultSessionManager$2
            dup
            aload 0 /* this */
            invokespecial org.glassfish.grizzly.http.server.DefaultSessionManager$2.<init>:(Lorg/glassfish/grizzly/http/server/DefaultSessionManager;)V
         6: .line 87
            ldc 5
            ldc 5
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
         7: .line 70
            invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.scheduleAtFixedRate:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            pop
         8: .line 91
            return
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;

  public org.glassfish.grizzly.http.server.Session getSession(org.glassfish.grizzly.http.server.Request, java.lang.String);
    descriptor: (Lorg/glassfish/grizzly/http/server/Request;Ljava/lang/String;)Lorg/glassfish/grizzly/http/server/Session;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
        start local 1 // org.glassfish.grizzly.http.server.Request request
        start local 2 // java.lang.String requestedSessionId
         0: .line 96
            aload 2 /* requestedSessionId */
            ifnull 4
         1: .line 97
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessions:Ljava/util/concurrent/ConcurrentMap;
            aload 2 /* requestedSessionId */
            invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.http.server.Session
            astore 3 /* session */
        start local 3 // org.glassfish.grizzly.http.server.Session session
         2: .line 98
            aload 3 /* session */
            ifnull 4
            aload 3 /* session */
            invokevirtual org.glassfish.grizzly.http.server.Session.isValid:()Z
            ifeq 4
         3: .line 99
            aload 3 /* session */
            areturn
        end local 3 // org.glassfish.grizzly.http.server.Session session
         4: .line 103
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.lang.String requestedSessionId
        end local 1 // org.glassfish.grizzly.http.server.Request request
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
            0    5     1             request  Lorg/glassfish/grizzly/http/server/Request;
            0    5     2  requestedSessionId  Ljava/lang/String;
            2    4     3             session  Lorg/glassfish/grizzly/http/server/Session;
    MethodParameters:
                    Name  Flags
      request             final
      requestedSessionId  

  public org.glassfish.grizzly.http.server.Session createSession(org.glassfish.grizzly.http.server.Request);
    descriptor: (Lorg/glassfish/grizzly/http/server/Request;)Lorg/glassfish/grizzly/http/server/Session;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
        start local 1 // org.glassfish.grizzly.http.server.Request request
         0: .line 109
            new org.glassfish.grizzly.http.server.Session
            dup
            invokespecial org.glassfish.grizzly.http.server.Session.<init>:()V
            astore 2 /* session */
        start local 2 // org.glassfish.grizzly.http.server.Session session
         1: .line 113
      StackMap locals: org.glassfish.grizzly.http.server.Session
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.DefaultSessionManager.generateRandomLong:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            astore 3 /* requestedSessionId */
        start local 3 // java.lang.String requestedSessionId
         2: .line 114
            aload 2 /* session */
            aload 3 /* requestedSessionId */
            invokevirtual org.glassfish.grizzly.http.server.Session.setIdInternal:(Ljava/lang/String;)V
         3: .line 115
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessions:Ljava/util/concurrent/ConcurrentMap;
            aload 3 /* requestedSessionId */
            aload 2 /* session */
            invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            ifnonnull 1
         4: .line 117
            aload 2 /* session */
            areturn
        end local 3 // java.lang.String requestedSessionId
        end local 2 // org.glassfish.grizzly.http.server.Session session
        end local 1 // org.glassfish.grizzly.http.server.Request request
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
            0    5     1             request  Lorg/glassfish/grizzly/http/server/Request;
            1    5     2             session  Lorg/glassfish/grizzly/http/server/Session;
            2    5     3  requestedSessionId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      request  final

  public java.lang.String changeSessionId(org.glassfish.grizzly.http.server.Request, org.glassfish.grizzly.http.server.Session);
    descriptor: (Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/server/Session;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
        start local 1 // org.glassfish.grizzly.http.server.Request request
        start local 2 // org.glassfish.grizzly.http.server.Session session
         0: .line 122
            aload 2 /* session */
            invokevirtual org.glassfish.grizzly.http.server.Session.getIdInternal:()Ljava/lang/String;
            astore 3 /* oldSessionId */
        start local 3 // java.lang.String oldSessionId
         1: .line 123
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.http.server.DefaultSessionManager.generateRandomLong:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            astore 4 /* newSessionId */
        start local 4 // java.lang.String newSessionId
         2: .line 125
            aload 2 /* session */
            aload 4 /* newSessionId */
            invokevirtual org.glassfish.grizzly.http.server.Session.setIdInternal:(Ljava/lang/String;)V
         3: .line 127
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessions:Ljava/util/concurrent/ConcurrentMap;
            aload 3 /* oldSessionId */
            invokeinterface java.util.concurrent.ConcurrentMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 128
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessions:Ljava/util/concurrent/ConcurrentMap;
            aload 4 /* newSessionId */
            aload 2 /* session */
            invokeinterface java.util.concurrent.ConcurrentMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 129
            aload 3 /* oldSessionId */
            areturn
        end local 4 // java.lang.String newSessionId
        end local 3 // java.lang.String oldSessionId
        end local 2 // org.glassfish.grizzly.http.server.Session session
        end local 1 // org.glassfish.grizzly.http.server.Request request
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
            0    6     1       request  Lorg/glassfish/grizzly/http/server/Request;
            0    6     2       session  Lorg/glassfish/grizzly/http/server/Session;
            1    6     3  oldSessionId  Ljava/lang/String;
            2    6     4  newSessionId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      request  final
      session  final

  public void configureSessionCookie(org.glassfish.grizzly.http.server.Request, org.glassfish.grizzly.http.Cookie);
    descriptor: (Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/Cookie;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
        start local 1 // org.glassfish.grizzly.http.server.Request request
        start local 2 // org.glassfish.grizzly.http.Cookie cookie
         0: .line 134
            return
        end local 2 // org.glassfish.grizzly.http.Cookie cookie
        end local 1 // org.glassfish.grizzly.http.server.Request request
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
            0    1     1  request  Lorg/glassfish/grizzly/http/server/Request;
            0    1     2   cookie  Lorg/glassfish/grizzly/http/Cookie;
    MethodParameters:
         Name  Flags
      request  final
      cookie   final

  public void setSessionCookieName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
        start local 1 // java.lang.String name
         0: .line 138
            aload 1 /* name */
            ifnull 2
            aload 1 /* name */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 2
         1: .line 139
            aload 0 /* this */
            aload 1 /* name */
            putfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessionCookieName:Ljava/lang/String;
         2: .line 141
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String name
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.String getSessionCookieName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
         0: .line 145
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.sessionCookieName:Ljava/lang/String;
            areturn
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;

  private long generateRandomLong();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
         0: .line 152
            aload 0 /* this */
            getfield org.glassfish.grizzly.http.server.DefaultSessionManager.rnd:Ljava/util/Random;
            invokevirtual java.util.Random.nextLong:()J
            ldc 9223372036854775807
            land
            lreturn
        end local 0 // org.glassfish.grizzly.http.server.DefaultSessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/http/server/DefaultSessionManager;
}
SourceFile: "DefaultSessionManager.java"
NestMembers:
  org.glassfish.grizzly.http.server.DefaultSessionManager$1  org.glassfish.grizzly.http.server.DefaultSessionManager$2  org.glassfish.grizzly.http.server.DefaultSessionManager$LazyHolder
InnerClasses:
  org.glassfish.grizzly.http.server.DefaultSessionManager$1
  org.glassfish.grizzly.http.server.DefaultSessionManager$2
  private LazyHolder = org.glassfish.grizzly.http.server.DefaultSessionManager$LazyHolder of org.glassfish.grizzly.http.server.DefaultSessionManager