public class android.telecom.Logging.SessionManager
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.telecom.Logging.SessionManager
  super_class: java.lang.Object
{
  private static final long SESSION_ID_ROLLOVER_THRESHOLD;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 262144

  private static final long DEFAULT_SESSION_TIMEOUT_MS;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 30000

  private static final java.lang.String LOGGING_TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Logging"

  private static final java.lang.String TIMEOUTS_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "telecom."

  private int sCodeEntryCounter;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private android.content.Context mContext;
    descriptor: Landroid/content/Context;
    flags: (0x0002) ACC_PRIVATE

  public java.util.concurrent.ConcurrentHashMap<java.lang.Integer, android.telecom.Logging.Session> mSessionMapper;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0001) ACC_PUBLIC
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Integer;Landroid/telecom/Logging/Session;>;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()

  public java.lang.Runnable mCleanStaleSessions;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0001) ACC_PUBLIC
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()

  private android.os.Handler mSessionCleanupHandler;
    descriptor: Landroid/os/Handler;
    flags: (0x0002) ACC_PRIVATE

  public android.telecom.Logging.SessionManager$ICurrentThreadId mCurrentThreadId;
    descriptor: Landroid/telecom/Logging/SessionManager$ICurrentThreadId;
    flags: (0x0001) ACC_PUBLIC
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()

  private android.telecom.Logging.SessionManager$ISessionCleanupTimeoutMs mSessionCleanupTimeoutMs;
    descriptor: Landroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs;
    flags: (0x0002) ACC_PRIVATE

  private java.util.List<android.telecom.Logging.SessionManager$ISessionListener> mSessionListeners;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Landroid/telecom/Logging/SessionManager$ISessionListener;>;

  public void setContext(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.content.Context context
         0: .line 100
            aload 0 /* this */
            aload 1 /* context */
            putfield android.telecom.Logging.SessionManager.mContext:Landroid/content/Context;
         1: .line 101
            return
        end local 1 // android.content.Context context
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Landroid/telecom/Logging/SessionManager;
            0    2     1  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      context  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 103
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            aload 0 /* this */
            iconst_0
            putfield android.telecom.Logging.SessionManager.sCodeEntryCounter:I
         2: .line 55
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 100
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
         3: .line 57
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic run(Landroid/telecom/Logging/SessionManager;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  android/telecom/Logging/SessionManager.lambda$0()V (7)
                  ()V
            putfield android.telecom.Logging.SessionManager.mCleanStaleSessions:Ljava/lang/Runnable;
         4: .line 59
            aload 0 /* this */
            new android.os.Handler
            dup
            invokestatic android.os.Looper.getMainLooper:()Landroid/os/Looper;
            invokespecial android.os.Handler.<init>:(Landroid/os/Looper;)V
            putfield android.telecom.Logging.SessionManager.mSessionCleanupHandler:Landroid/os/Handler;
         5: .line 72
            aload 0 /* this */
            invokedynamic get()Landroid/telecom/Logging/SessionManager$ICurrentThreadId;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()I
                  android/os/Process.myTid()I (6)
                  ()I
            putfield android.telecom.Logging.SessionManager.mCurrentThreadId:Landroid/telecom/Logging/SessionManager$ICurrentThreadId;
         6: .line 74
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic get(Landroid/telecom/Logging/SessionManager;)Landroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()J
                  android/telecom/Logging/SessionManager.lambda$2()J (7)
                  ()J
            putfield android.telecom.Logging.SessionManager.mSessionCleanupTimeoutMs:Landroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs;
         7: .line 84
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.telecom.Logging.SessionManager.mSessionListeners:Ljava/util/List;
         8: .line 104
            return
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Landroid/telecom/Logging/SessionManager;

  private long getSessionCleanupTimeoutMs();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 107
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionCleanupTimeoutMs:Landroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs;
            invokeinterface android.telecom.Logging.SessionManager$ISessionCleanupTimeoutMs.get:()J
            lreturn
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/telecom/Logging/SessionManager;

  private synchronized void resetStaleSessionTimer();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 111
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionCleanupHandler:Landroid/os/Handler;
            aconst_null
            invokevirtual android.os.Handler.removeCallbacksAndMessages:(Ljava/lang/Object;)V
         1: .line 113
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mCleanStaleSessions:Ljava/lang/Runnable;
            ifnull 3
         2: .line 114
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionCleanupHandler:Landroid/os/Handler;
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mCleanStaleSessions:Ljava/lang/Runnable;
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getSessionCleanupTimeoutMs:()J
            invokevirtual android.os.Handler.postDelayed:(Ljava/lang/Runnable;J)Z
            pop
         3: .line 116
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/telecom/Logging/SessionManager;

  public synchronized void startSession(android.telecom.Logging.Session$Info, java.lang.String, java.lang.String);
    descriptor: (Landroid/telecom/Logging/Session$Info;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.telecom.Logging.Session$Info info
        start local 2 // java.lang.String shortMethodName
        start local 3 // java.lang.String callerIdentification
         0: .line 126
            aload 1 /* info */
            ifnonnull 3
         1: .line 127
            aload 0 /* this */
            aload 2 /* shortMethodName */
            aload 3 /* callerIdentification */
            invokevirtual android.telecom.Logging.SessionManager.startSession:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 128
            goto 4
         3: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* info */
            aload 2 /* shortMethodName */
            invokevirtual android.telecom.Logging.SessionManager.startExternalSession:(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V
         4: .line 131
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.String callerIdentification
        end local 2 // java.lang.String shortMethodName
        end local 1 // android.telecom.Logging.Session$Info info
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    5     0                  this  Landroid/telecom/Logging/SessionManager;
            0    5     1                  info  Landroid/telecom/Logging/Session$Info;
            0    5     2       shortMethodName  Ljava/lang/String;
            0    5     3  callerIdentification  Ljava/lang/String;
    MethodParameters:
                      Name  Flags
      info                  
      shortMethodName       
      callerIdentification  

  public synchronized void startSession(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=8, locals=6, args_size=3
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // java.lang.String shortMethodName
        start local 2 // java.lang.String callerIdentification
         0: .line 139
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.resetStaleSessionTimer:()V
         1: .line 140
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            istore 3 /* threadId */
        start local 3 // int threadId
         2: .line 141
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 3 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 4 /* activeSession */
        start local 4 // android.telecom.Logging.Session activeSession
         3: .line 144
            aload 4 /* activeSession */
            ifnull 7
         4: .line 145
            aload 0 /* this */
            iconst_1
            invokevirtual android.telecom.Logging.SessionManager.createSubsession:(Z)Landroid/telecom/Logging/Session;
            astore 5 /* childSession */
        start local 5 // android.telecom.Logging.Session childSession
         5: .line 146
            aload 0 /* this */
            aload 5 /* childSession */
            aload 1 /* shortMethodName */
            invokevirtual android.telecom.Logging.SessionManager.continueSession:(Landroid/telecom/Logging/Session;Ljava/lang/String;)V
         6: .line 147
            return
        end local 5 // android.telecom.Logging.Session childSession
         7: .line 150
      StackMap locals: int android.telecom.Logging.Session
      StackMap stack:
            ldc "Logging"
            ldc "START_SESSION"
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.d:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         8: .line 152
            new android.telecom.Logging.Session
            dup
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getNextSessionID:()Ljava/lang/String;
            aload 1 /* shortMethodName */
         9: .line 153
            invokestatic java.lang.System.currentTimeMillis:()J
            iconst_0
            aload 2 /* callerIdentification */
        10: .line 152
            invokespecial android.telecom.Logging.Session.<init>:(Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;)V
            astore 5 /* newSession */
        start local 5 // android.telecom.Logging.Session newSession
        11: .line 154
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 3 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* newSession */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 155
            return
        end local 5 // android.telecom.Logging.Session newSession
        end local 4 // android.telecom.Logging.Session activeSession
        end local 3 // int threadId
        end local 2 // java.lang.String callerIdentification
        end local 1 // java.lang.String shortMethodName
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   13     0                  this  Landroid/telecom/Logging/SessionManager;
            0   13     1       shortMethodName  Ljava/lang/String;
            0   13     2  callerIdentification  Ljava/lang/String;
            2   13     3              threadId  I
            3   13     4         activeSession  Landroid/telecom/Logging/Session;
            5    7     5          childSession  Landroid/telecom/Logging/Session;
           11   13     5            newSession  Landroid/telecom/Logging/Session;
    MethodParameters:
                      Name  Flags
      shortMethodName       
      callerIdentification  

  public synchronized void startExternalSession(android.telecom.Logging.Session$Info, java.lang.String);
    descriptor: (Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=8, locals=7, args_size=3
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.telecom.Logging.Session$Info sessionInfo
        start local 2 // java.lang.String shortMethodName
         0: .line 165
            aload 1 /* sessionInfo */
            ifnonnull 2
         1: .line 166
            return
         2: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            istore 3 /* threadId */
        start local 3 // int threadId
         3: .line 170
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 3 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 4 /* threadSession */
        start local 4 // android.telecom.Logging.Session threadSession
         4: .line 171
            aload 4 /* threadSession */
            ifnull 7
         5: .line 174
            ldc "Logging"
            ldc "trying to start an external session with a session already active."
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.w:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         6: .line 176
            return
         7: .line 180
      StackMap locals: int android.telecom.Logging.Session
      StackMap stack:
            ldc "Logging"
            ldc "START_EXTERNAL_SESSION"
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.d:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         8: .line 181
            new android.telecom.Logging.Session
            dup
            new java.lang.StringBuilder
            dup
            ldc "E-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* sessionInfo */
            getfield android.telecom.Logging.Session$Info.sessionId:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 182
            aload 1 /* sessionInfo */
            getfield android.telecom.Logging.Session$Info.methodPath:Ljava/lang/String;
            invokestatic java.lang.System.currentTimeMillis:()J
        10: .line 183
            iconst_0
            aconst_null
        11: .line 181
            invokespecial android.telecom.Logging.Session.<init>:(Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;)V
            astore 5 /* externalSession */
        start local 5 // android.telecom.Logging.Session externalSession
        12: .line 184
            aload 5 /* externalSession */
            iconst_1
            invokevirtual android.telecom.Logging.Session.setIsExternal:(Z)V
        13: .line 187
            aload 5 /* externalSession */
            ldc -1
            invokevirtual android.telecom.Logging.Session.markSessionCompleted:(J)V
        14: .line 190
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 3 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* externalSession */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 192
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.createSubsession:()Landroid/telecom/Logging/Session;
            astore 6 /* childSession */
        start local 6 // android.telecom.Logging.Session childSession
        16: .line 193
            aload 0 /* this */
            aload 6 /* childSession */
            aload 2 /* shortMethodName */
            invokevirtual android.telecom.Logging.SessionManager.continueSession:(Landroid/telecom/Logging/Session;Ljava/lang/String;)V
        17: .line 194
            return
        end local 6 // android.telecom.Logging.Session childSession
        end local 5 // android.telecom.Logging.Session externalSession
        end local 4 // android.telecom.Logging.Session threadSession
        end local 3 // int threadId
        end local 2 // java.lang.String shortMethodName
        end local 1 // android.telecom.Logging.Session$Info sessionInfo
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   18     0             this  Landroid/telecom/Logging/SessionManager;
            0   18     1      sessionInfo  Landroid/telecom/Logging/Session$Info;
            0   18     2  shortMethodName  Ljava/lang/String;
            3   18     3         threadId  I
            4   18     4    threadSession  Landroid/telecom/Logging/Session;
           12   18     5  externalSession  Landroid/telecom/Logging/Session;
           16   18     6     childSession  Landroid/telecom/Logging/Session;
    MethodParameters:
                 Name  Flags
      sessionInfo      
      shortMethodName  

  public android.telecom.Logging.Session createSubsession();
    descriptor: ()Landroid/telecom/Logging/Session;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 202
            aload 0 /* this */
            iconst_0
            invokevirtual android.telecom.Logging.SessionManager.createSubsession:(Z)Landroid/telecom/Logging/Session;
            areturn
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/telecom/Logging/SessionManager;

  private synchronized android.telecom.Logging.Session createSubsession(boolean);
    descriptor: (Z)Landroid/telecom/Logging/Session;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // boolean isStartedFromActiveSession
         0: .line 206
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            istore 2 /* threadId */
        start local 2 // int threadId
         1: .line 207
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 2 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 3 /* threadSession */
        start local 3 // android.telecom.Logging.Session threadSession
         2: .line 208
            aload 3 /* threadSession */
            ifnonnull 5
         3: .line 209
            ldc "Logging"
            ldc "Log.createSubsession was called with no session active."
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.d:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 211
            aconst_null
            areturn
         5: .line 214
      StackMap locals: int android.telecom.Logging.Session
      StackMap stack:
            new android.telecom.Logging.Session
            dup
            aload 3 /* threadSession */
            invokevirtual android.telecom.Logging.Session.getNextChildId:()Ljava/lang/String;
         6: .line 215
            aload 3 /* threadSession */
            invokevirtual android.telecom.Logging.Session.getShortMethodName:()Ljava/lang/String;
            invokestatic java.lang.System.currentTimeMillis:()J
         7: .line 216
            iload 1 /* isStartedFromActiveSession */
            aconst_null
         8: .line 214
            invokespecial android.telecom.Logging.Session.<init>:(Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;)V
            astore 4 /* newSubsession */
        start local 4 // android.telecom.Logging.Session newSubsession
         9: .line 217
            aload 3 /* threadSession */
            aload 4 /* newSubsession */
            invokevirtual android.telecom.Logging.Session.addChild:(Landroid/telecom/Logging/Session;)V
        10: .line 218
            aload 4 /* newSubsession */
            aload 3 /* threadSession */
            invokevirtual android.telecom.Logging.Session.setParentSession:(Landroid/telecom/Logging/Session;)V
        11: .line 220
            iload 1 /* isStartedFromActiveSession */
            ifne 16
        12: .line 221
            ldc "Logging"
            new java.lang.StringBuilder
            dup
            ldc "CREATE_SUBSESSION "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 222
            aload 4 /* newSubsession */
            invokevirtual android.telecom.Logging.Session.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        14: .line 221
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 223
            goto 17
        16: .line 224
      StackMap locals: android.telecom.Logging.Session
      StackMap stack:
            ldc "Logging"
            ldc "CREATE_SUBSESSION (Invisible subsession)"
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        17: .line 227
      StackMap locals:
      StackMap stack:
            aload 4 /* newSubsession */
            areturn
        end local 4 // android.telecom.Logging.Session newSubsession
        end local 3 // android.telecom.Logging.Session threadSession
        end local 2 // int threadId
        end local 1 // boolean isStartedFromActiveSession
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   18     0                        this  Landroid/telecom/Logging/SessionManager;
            0   18     1  isStartedFromActiveSession  Z
            1   18     2                    threadId  I
            2   18     3               threadSession  Landroid/telecom/Logging/Session;
            9   18     4               newSubsession  Landroid/telecom/Logging/Session;
    MethodParameters:
                            Name  Flags
      isStartedFromActiveSession  

  public synchronized android.telecom.Logging.Session$Info getExternalSession();
    descriptor: ()Landroid/telecom/Logging/Session$Info;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 236
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            istore 1 /* threadId */
        start local 1 // int threadId
         1: .line 237
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 1 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 2 /* threadSession */
        start local 2 // android.telecom.Logging.Session threadSession
         2: .line 238
            aload 2 /* threadSession */
            ifnonnull 5
         3: .line 239
            ldc "Logging"
            ldc "Log.getExternalSession was called with no session active."
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.d:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 241
            aconst_null
            areturn
         5: .line 244
      StackMap locals: int android.telecom.Logging.Session
      StackMap stack:
            aload 2 /* threadSession */
            invokevirtual android.telecom.Logging.Session.getInfo:()Landroid/telecom/Logging/Session$Info;
            areturn
        end local 2 // android.telecom.Logging.Session threadSession
        end local 1 // int threadId
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Landroid/telecom/Logging/SessionManager;
            1    6     1       threadId  I
            2    6     2  threadSession  Landroid/telecom/Logging/Session;

  public synchronized void cancelSubsession(android.telecom.Logging.Session);
    descriptor: (Landroid/telecom/Logging/Session;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.telecom.Logging.Session subsession
         0: .line 253
            aload 1 /* subsession */
            ifnonnull 2
         1: .line 254
            return
         2: .line 257
      StackMap locals:
      StackMap stack:
            aload 1 /* subsession */
            ldc -1
            invokevirtual android.telecom.Logging.Session.markSessionCompleted:(J)V
         3: .line 258
            aload 0 /* this */
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.SessionManager.endParentSessions:(Landroid/telecom/Logging/Session;)V
         4: .line 259
            return
        end local 1 // android.telecom.Logging.Session subsession
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Landroid/telecom/Logging/SessionManager;
            0    5     1  subsession  Landroid/telecom/Logging/Session;
    MethodParameters:
            Name  Flags
      subsession  

  public synchronized void continueSession(android.telecom.Logging.Session, java.lang.String);
    descriptor: (Landroid/telecom/Logging/Session;Ljava/lang/String;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.telecom.Logging.Session subsession
        start local 2 // java.lang.String shortMethodName
         0: .line 267
            aload 1 /* subsession */
            ifnonnull 2
         1: .line 268
            return
         2: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.resetStaleSessionTimer:()V
         3: .line 271
            aload 1 /* subsession */
            aload 2 /* shortMethodName */
            invokevirtual android.telecom.Logging.Session.setShortMethodName:(Ljava/lang/String;)V
         4: .line 272
            aload 1 /* subsession */
            invokestatic java.lang.System.currentTimeMillis:()J
            invokevirtual android.telecom.Logging.Session.setExecutionStartTimeMs:(J)V
         5: .line 273
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getParentSession:()Landroid/telecom/Logging/Session;
            astore 3 /* parentSession */
        start local 3 // android.telecom.Logging.Session parentSession
         6: .line 274
            aload 3 /* parentSession */
            ifnonnull 11
         7: .line 275
            ldc "Logging"
            new java.lang.StringBuilder
            dup
            ldc "Log.continueSession was called with no session active for method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 276
            aload 2 /* shortMethodName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
         9: .line 275
            invokestatic android.telecom.Log.i:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        10: .line 277
            return
        11: .line 280
      StackMap locals: android.telecom.Logging.Session
      StackMap stack:
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* subsession */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 281
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.isStartedFromActiveSession:()Z
            ifne 15
        13: .line 282
            ldc "Logging"
            ldc "CONTINUE_SUBSESSION"
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        14: .line 283
            goto 18
        15: .line 284
      StackMap locals:
      StackMap stack:
            ldc "Logging"
            new java.lang.StringBuilder
            dup
            ldc "CONTINUE_SUBSESSION (Invisible Subsession) with Method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        16: .line 285
            aload 2 /* shortMethodName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        17: .line 284
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        18: .line 287
      StackMap locals:
      StackMap stack:
            return
        end local 3 // android.telecom.Logging.Session parentSession
        end local 2 // java.lang.String shortMethodName
        end local 1 // android.telecom.Logging.Session subsession
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0             this  Landroid/telecom/Logging/SessionManager;
            0   19     1       subsession  Landroid/telecom/Logging/Session;
            0   19     2  shortMethodName  Ljava/lang/String;
            6   19     3    parentSession  Landroid/telecom/Logging/Session;
    MethodParameters:
                 Name  Flags
      subsession       
      shortMethodName  

  public synchronized void endSession();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 294
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            istore 1 /* threadId */
        start local 1 // int threadId
         1: .line 295
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 1 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 2 /* completedSession */
        start local 2 // android.telecom.Logging.Session completedSession
         2: .line 296
            aload 2 /* completedSession */
            ifnonnull 5
         3: .line 297
            ldc "Logging"
            ldc "Log.endSession was called with no session active."
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.w:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 298
            return
         5: .line 301
      StackMap locals: int android.telecom.Logging.Session
      StackMap stack:
            aload 2 /* completedSession */
            invokestatic java.lang.System.currentTimeMillis:()J
            invokevirtual android.telecom.Logging.Session.markSessionCompleted:(J)V
         6: .line 302
            aload 2 /* completedSession */
            invokevirtual android.telecom.Logging.Session.isStartedFromActiveSession:()Z
            ifne 11
         7: .line 303
            ldc "Logging"
            new java.lang.StringBuilder
            dup
            ldc "END_SUBSESSION (dur: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 304
            aload 2 /* completedSession */
            invokevirtual android.telecom.Logging.Session.getLocalExecutionTime:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " mS)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
         9: .line 303
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        10: .line 305
            goto 15
        11: .line 306
      StackMap locals:
      StackMap stack:
            ldc "Logging"
            new java.lang.StringBuilder
            dup
            ldc "END_SUBSESSION (Invisible Subsession) (dur: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        12: .line 307
            aload 2 /* completedSession */
            invokevirtual android.telecom.Logging.Session.getLocalExecutionTime:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
        13: .line 308
            ldc " ms)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        14: .line 306
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 311
      StackMap locals:
      StackMap stack:
            aload 2 /* completedSession */
            invokevirtual android.telecom.Logging.Session.getParentSession:()Landroid/telecom/Logging/Session;
            astore 3 /* parentSession */
        start local 3 // android.telecom.Logging.Session parentSession
        16: .line 312
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 1 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 313
            aload 0 /* this */
            aload 2 /* completedSession */
            invokevirtual android.telecom.Logging.SessionManager.endParentSessions:(Landroid/telecom/Logging/Session;)V
        18: .line 316
            aload 3 /* parentSession */
            ifnull 21
            aload 3 /* parentSession */
            invokevirtual android.telecom.Logging.Session.isSessionCompleted:()Z
            ifne 21
        19: .line 317
            aload 2 /* completedSession */
            invokevirtual android.telecom.Logging.Session.isStartedFromActiveSession:()Z
            ifeq 21
        20: .line 318
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            iload 1 /* threadId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 3 /* parentSession */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 320
      StackMap locals: android.telecom.Logging.Session
      StackMap stack:
            return
        end local 3 // android.telecom.Logging.Session parentSession
        end local 2 // android.telecom.Logging.Session completedSession
        end local 1 // int threadId
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   22     0              this  Landroid/telecom/Logging/SessionManager;
            1   22     1          threadId  I
            2   22     2  completedSession  Landroid/telecom/Logging/Session;
           16   22     3     parentSession  Landroid/telecom/Logging/Session;

  private void endParentSessions(android.telecom.Logging.Session);
    descriptor: (Landroid/telecom/Logging/Session;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.telecom.Logging.Session subsession
         0: .line 326
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.isSessionCompleted:()Z
            ifeq 1
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getChildSessions:()Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            ifeq 2
         1: .line 327
      StackMap locals:
      StackMap stack:
            return
         2: .line 329
      StackMap locals:
      StackMap stack:
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getParentSession:()Landroid/telecom/Logging/Session;
            astore 2 /* parentSession */
        start local 2 // android.telecom.Logging.Session parentSession
         3: .line 330
            aload 2 /* parentSession */
            ifnull 12
         4: .line 331
            aload 1 /* subsession */
            aconst_null
            invokevirtual android.telecom.Logging.Session.setParentSession:(Landroid/telecom/Logging/Session;)V
         5: .line 332
            aload 2 /* parentSession */
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.removeChild:(Landroid/telecom/Logging/Session;)V
         6: .line 335
            aload 2 /* parentSession */
            invokevirtual android.telecom.Logging.Session.isExternal:()Z
            ifeq 10
         7: .line 337
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getExecutionStartTimeMilliseconds:()J
            lsub
         8: .line 336
            lstore 3 /* fullSessionTimeMs */
        start local 3 // long fullSessionTimeMs
         9: .line 338
            aload 0 /* this */
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getShortMethodName:()Ljava/lang/String;
            lload 3 /* fullSessionTimeMs */
            invokevirtual android.telecom.Logging.SessionManager.notifySessionCompleteListeners:(Ljava/lang/String;J)V
        end local 3 // long fullSessionTimeMs
        10: .line 340
      StackMap locals: android.telecom.Logging.Session
      StackMap stack:
            aload 0 /* this */
            aload 2 /* parentSession */
            invokevirtual android.telecom.Logging.SessionManager.endParentSessions:(Landroid/telecom/Logging/Session;)V
        11: .line 341
            goto 19
        12: .line 345
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getExecutionStartTimeMilliseconds:()J
            lsub
        13: .line 344
            lstore 3 /* fullSessionTimeMs */
        start local 3 // long fullSessionTimeMs
        14: .line 346
            ldc "Logging"
            new java.lang.StringBuilder
            dup
            ldc "END_SESSION (dur: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 3 /* fullSessionTimeMs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
        15: .line 347
            ldc " ms): "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        16: .line 346
            invokestatic android.telecom.Log.d:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        17: .line 348
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.isExternal:()Z
            ifne 19
        18: .line 349
            aload 0 /* this */
            aload 1 /* subsession */
            invokevirtual android.telecom.Logging.Session.getShortMethodName:()Ljava/lang/String;
            lload 3 /* fullSessionTimeMs */
            invokevirtual android.telecom.Logging.SessionManager.notifySessionCompleteListeners:(Ljava/lang/String;J)V
        end local 3 // long fullSessionTimeMs
        19: .line 352
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.telecom.Logging.Session parentSession
        end local 1 // android.telecom.Logging.Session subsession
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   20     0               this  Landroid/telecom/Logging/SessionManager;
            0   20     1         subsession  Landroid/telecom/Logging/Session;
            3   20     2      parentSession  Landroid/telecom/Logging/Session;
            9   10     3  fullSessionTimeMs  J
           14   19     3  fullSessionTimeMs  J
    MethodParameters:
            Name  Flags
      subsession  

  private void notifySessionCompleteListeners(java.lang.String, long);
    descriptor: (Ljava/lang/String;J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // java.lang.String methodName
        start local 2 // long sessionTimeMs
         0: .line 355
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionListeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 3
      StackMap locals: android.telecom.Logging.SessionManager java.lang.String long top java.util.Iterator
      StackMap stack:
         1: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.telecom.Logging.SessionManager$ISessionListener
            astore 4 /* l */
        start local 4 // android.telecom.Logging.SessionManager$ISessionListener l
         2: .line 356
            aload 4 /* l */
            aload 1 /* methodName */
            lload 2 /* sessionTimeMs */
            invokeinterface android.telecom.Logging.SessionManager$ISessionListener.sessionComplete:(Ljava/lang/String;J)V
        end local 4 // android.telecom.Logging.SessionManager$ISessionListener l
         3: .line 355
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 358
            return
        end local 2 // long sessionTimeMs
        end local 1 // java.lang.String methodName
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Landroid/telecom/Logging/SessionManager;
            0    5     1     methodName  Ljava/lang/String;
            0    5     2  sessionTimeMs  J
            2    3     4              l  Landroid/telecom/Logging/SessionManager$ISessionListener;
    MethodParameters:
               Name  Flags
      methodName     
      sessionTimeMs  

  public java.lang.String getSessionId();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 361
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getCallingThreadId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 1 /* currentSession */
        start local 1 // android.telecom.Logging.Session currentSession
         1: .line 362
            aload 1 /* currentSession */
            ifnull 2
            aload 1 /* currentSession */
            invokevirtual android.telecom.Logging.Session.toString:()Ljava/lang/String;
            goto 3
      StackMap locals: android.telecom.Logging.Session
      StackMap stack:
         2: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
         3: areturn
        end local 1 // android.telecom.Logging.Session currentSession
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Landroid/telecom/Logging/SessionManager;
            1    4     1  currentSession  Landroid/telecom/Logging/Session;

  public synchronized void registerSessionListener(android.telecom.Logging.SessionManager$ISessionListener);
    descriptor: (Landroid/telecom/Logging/SessionManager$ISessionListener;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.telecom.Logging.SessionManager$ISessionListener l
         0: .line 366
            aload 1 /* l */
            ifnull 2
         1: .line 367
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionListeners:Ljava/util/List;
            aload 1 /* l */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 369
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.telecom.Logging.SessionManager$ISessionListener l
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/telecom/Logging/SessionManager;
            0    3     1     l  Landroid/telecom/Logging/SessionManager$ISessionListener;
    MethodParameters:
      Name  Flags
      l     

  private synchronized java.lang.String getNextSessionID();
    descriptor: ()Ljava/lang/String;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 372
            aload 0 /* this */
            dup
            getfield android.telecom.Logging.SessionManager.sCodeEntryCounter:I
            dup_x1
            iconst_1
            iadd
            putfield android.telecom.Logging.SessionManager.sCodeEntryCounter:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 1 /* nextId */
        start local 1 // java.lang.Integer nextId
         1: .line 373
            aload 1 /* nextId */
            invokevirtual java.lang.Integer.intValue:()I
            i2l
            ldc 262144
            lcmp
            iflt 4
         2: .line 374
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.restartSessionCounter:()V
         3: .line 375
            aload 0 /* this */
            dup
            getfield android.telecom.Logging.SessionManager.sCodeEntryCounter:I
            dup_x1
            iconst_1
            iadd
            putfield android.telecom.Logging.SessionManager.sCodeEntryCounter:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 1 /* nextId */
         4: .line 377
      StackMap locals: java.lang.Integer
      StackMap stack:
            aload 0 /* this */
            aload 1 /* nextId */
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual android.telecom.Logging.SessionManager.getBase64Encoding:(I)Ljava/lang/String;
            areturn
        end local 1 // java.lang.Integer nextId
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Landroid/telecom/Logging/SessionManager;
            1    5     1  nextId  Ljava/lang/Integer;

  private synchronized void restartSessionCounter();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 381
            aload 0 /* this */
            iconst_0
            putfield android.telecom.Logging.SessionManager.sCodeEntryCounter:I
         1: .line 382
            return
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/telecom/Logging/SessionManager;

  private java.lang.String getBase64Encoding(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // int number
         0: .line 385
            iconst_4
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            iload 1 /* number */
            invokevirtual java.nio.ByteBuffer.putInt:(I)Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 2 /* idByteArray */
        start local 2 // byte[] idByteArray
         1: .line 386
            aload 2 /* idByteArray */
            iconst_2
            iconst_4
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
            astore 2 /* idByteArray */
         2: .line 387
            aload 2 /* idByteArray */
            iconst_3
            invokestatic android.util.Base64.encodeToString:([BI)Ljava/lang/String;
            areturn
        end local 2 // byte[] idByteArray
        end local 1 // int number
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Landroid/telecom/Logging/SessionManager;
            0    3     1       number  I
            1    3     2  idByteArray  [B
    MethodParameters:
        Name  Flags
      number  

  private int getCallingThreadId();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 391
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mCurrentThreadId:Landroid/telecom/Logging/SessionManager$ICurrentThreadId;
            invokeinterface android.telecom.Logging.SessionManager$ICurrentThreadId.get:()I
            ireturn
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/telecom/Logging/SessionManager;

  public synchronized void cleanupStaleSessions(long);
    descriptor: (J)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // long timeoutMs
         0: .line 396
            ldc "Stale Sessions Cleaned:\n"
            astore 3 /* logMessage */
        start local 3 // java.lang.String logMessage
         1: .line 397
            iconst_0
            istore 4 /* isSessionsStale */
        start local 4 // boolean isSessionsStale
         2: .line 398
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 5 /* currentTimeMs */
        start local 5 // long currentTimeMs
         3: .line 404
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mSessionMapper:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
         4: .line 403
            astore 7 /* it */
        start local 7 // java.util.Iterator it
         5: .line 404
            goto 12
         6: .line 405
      StackMap locals: android.telecom.Logging.SessionManager long java.lang.String int long java.util.Iterator
      StackMap stack:
            aload 7 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 8 /* entry */
        start local 8 // java.util.Map$Entry entry
         7: .line 406
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast android.telecom.Logging.Session
            astore 9 /* session */
        start local 9 // android.telecom.Logging.Session session
         8: .line 407
            lload 5 /* currentTimeMs */
            aload 9 /* session */
            invokevirtual android.telecom.Logging.Session.getExecutionStartTimeMilliseconds:()J
            lsub
            lload 1 /* timeoutMs */
            lcmp
            ifle 12
         9: .line 408
            aload 7 /* it */
            invokeinterface java.util.Iterator.remove:()V
        10: .line 409
            new java.lang.StringBuilder
            dup
            aload 3 /* logMessage */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* session */
            invokevirtual android.telecom.Logging.Session.printFullSessionTree:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* logMessage */
        11: .line 410
            iconst_1
            istore 4 /* isSessionsStale */
        end local 9 // android.telecom.Logging.Session session
        end local 8 // java.util.Map$Entry entry
        12: .line 404
      StackMap locals:
      StackMap stack:
            aload 7 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 7 // java.util.Iterator it
        13: .line 413
            iload 4 /* isSessionsStale */
            ifeq 16
        14: .line 414
            ldc "Logging"
            aload 3 /* logMessage */
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.w:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        15: .line 415
            goto 17
        16: .line 416
      StackMap locals:
      StackMap stack:
            ldc "Logging"
            ldc "No stale logging sessions needed to be cleaned..."
            iconst_0
            anewarray java.lang.Object
            invokestatic android.telecom.Log.v:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
        17: .line 418
      StackMap locals:
      StackMap stack:
            return
        end local 5 // long currentTimeMs
        end local 4 // boolean isSessionsStale
        end local 3 // java.lang.String logMessage
        end local 1 // long timeoutMs
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   18     0             this  Landroid/telecom/Logging/SessionManager;
            0   18     1        timeoutMs  J
            1   18     3       logMessage  Ljava/lang/String;
            2   18     4  isSessionsStale  Z
            3   18     5    currentTimeMs  J
            5   13     7               it  Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/Integer;Landroid/telecom/Logging/Session;>;>;
            7   12     8            entry  Ljava/util/Map$Entry<Ljava/lang/Integer;Landroid/telecom/Logging/Session;>;
            8   12     9          session  Landroid/telecom/Logging/Session;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
           Name  Flags
      timeoutMs  

  private long getCleanupTimeout(android.content.Context);
    descriptor: (Landroid/content/Context;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.telecom.Logging.SessionManager this
        start local 1 // android.content.Context context
         0: .line 425
            aload 1 /* context */
            invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
            ldc "telecom.stale_session_cleanup_timeout_millis"
         1: .line 426
            ldc 30000
         2: .line 425
            invokestatic android.provider.Settings$Secure.getLong:(Landroid/content/ContentResolver;Ljava/lang/String;J)J
            lreturn
        end local 1 // android.content.Context context
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Landroid/telecom/Logging/SessionManager;
            0    3     1  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      context  

  private void lambda$0();
    descriptor: ()V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 58
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual android.telecom.Logging.SessionManager.getSessionCleanupTimeoutMs:()J
            invokevirtual android.telecom.Logging.SessionManager.cleanupStaleSessions:(J)V
            return
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/telecom/Logging/SessionManager;

  private long lambda$2();
    descriptor: ()J
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.telecom.Logging.SessionManager this
         0: .line 77
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mContext:Landroid/content/Context;
            ifnonnull 2
         1: .line 78
            ldc 30000
            lreturn
         2: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.telecom.Logging.SessionManager.mContext:Landroid/content/Context;
            invokevirtual android.telecom.Logging.SessionManager.getCleanupTimeout:(Landroid/content/Context;)J
            lreturn
        end local 0 // android.telecom.Logging.SessionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/telecom/Logging/SessionManager;
}
SourceFile: "SessionManager.java"
NestMembers:
  android.telecom.Logging.SessionManager$ICurrentThreadId  android.telecom.Logging.SessionManager$ISessionCleanupTimeoutMs  android.telecom.Logging.SessionManager$ISessionIdQueryHandler  android.telecom.Logging.SessionManager$ISessionListener
InnerClasses:
  public final Secure = android.provider.Settings$Secure of android.provider.Settings
  public Info = android.telecom.Logging.Session$Info of android.telecom.Logging.Session
  public abstract ICurrentThreadId = android.telecom.Logging.SessionManager$ICurrentThreadId of android.telecom.Logging.SessionManager
  private abstract ISessionCleanupTimeoutMs = android.telecom.Logging.SessionManager$ISessionCleanupTimeoutMs of android.telecom.Logging.SessionManager
  public abstract ISessionIdQueryHandler = android.telecom.Logging.SessionManager$ISessionIdQueryHandler of android.telecom.Logging.SessionManager
  public abstract ISessionListener = android.telecom.Logging.SessionManager$ISessionListener of android.telecom.Logging.SessionManager
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map