public class com.android.internal.os.BluetoothPowerCalculator extends com.android.internal.os.PowerCalculator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.android.internal.os.BluetoothPowerCalculator
  super_class: com.android.internal.os.PowerCalculator
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

  private final double mIdleMa;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final double mRxMa;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final double mTxMa;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private double mAppTotalPowerMah;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private long mAppTotalTimeMs;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  public void <init>(com.android.internal.os.PowerProfile);
    descriptor: (Lcom/android/internal/os/PowerProfile;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.internal.os.BluetoothPowerCalculator this
        start local 1 // com.android.internal.os.PowerProfile profile
         0: .line 30
            aload 0 /* this */
            invokespecial com.android.internal.os.PowerCalculator.<init>:()V
         1: .line 27
            aload 0 /* this */
            dconst_0
            putfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalPowerMah:D
         2: .line 28
            aload 0 /* this */
            lconst_0
            putfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalTimeMs:J
         3: .line 31
            aload 0 /* this */
            aload 1 /* profile */
            ldc "bluetooth.controller.idle"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            putfield com.android.internal.os.BluetoothPowerCalculator.mIdleMa:D
         4: .line 32
            aload 0 /* this */
            aload 1 /* profile */
            ldc "bluetooth.controller.rx"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            putfield com.android.internal.os.BluetoothPowerCalculator.mRxMa:D
         5: .line 33
            aload 0 /* this */
            aload 1 /* profile */
            ldc "bluetooth.controller.tx"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            putfield com.android.internal.os.BluetoothPowerCalculator.mTxMa:D
         6: .line 34
            return
        end local 1 // com.android.internal.os.PowerProfile profile
        end local 0 // com.android.internal.os.BluetoothPowerCalculator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/android/internal/os/BluetoothPowerCalculator;
            0    7     1  profile  Lcom/android/internal/os/PowerProfile;
    MethodParameters:
         Name  Flags
      profile  

  public void calculateApp(com.android.internal.os.BatterySipper, android.os.BatteryStats$Uid, long, long, int);
    descriptor: (Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=19, args_size=6
        start local 0 // com.android.internal.os.BluetoothPowerCalculator this
        start local 1 // com.android.internal.os.BatterySipper app
        start local 2 // android.os.BatteryStats$Uid u
        start local 3 // long rawRealtimeUs
        start local 5 // long rawUptimeUs
        start local 7 // int statsType
         0: .line 40
            aload 2 /* u */
            invokevirtual android.os.BatteryStats$Uid.getBluetoothControllerActivity:()Landroid/os/BatteryStats$ControllerActivityCounter;
            astore 8 /* counter */
        start local 8 // android.os.BatteryStats$ControllerActivityCounter counter
         1: .line 41
            aload 8 /* counter */
            ifnonnull 3
         2: .line 42
            return
         3: .line 45
      StackMap locals: android.os.BatteryStats$ControllerActivityCounter
      StackMap stack:
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getIdleTimeCounter:()Landroid/os/BatteryStats$LongCounter;
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            lstore 9 /* idleTimeMs */
        start local 9 // long idleTimeMs
         4: .line 46
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getRxTimeCounter:()Landroid/os/BatteryStats$LongCounter;
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            lstore 11 /* rxTimeMs */
        start local 11 // long rxTimeMs
         5: .line 47
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getTxTimeCounters:()[Landroid/os/BatteryStats$LongCounter;
            iconst_0
            aaload
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            lstore 13 /* txTimeMs */
        start local 13 // long txTimeMs
         6: .line 48
            lload 9 /* idleTimeMs */
            lload 13 /* txTimeMs */
            ladd
            lload 11 /* rxTimeMs */
            ladd
            lstore 15 /* totalTimeMs */
        start local 15 // long totalTimeMs
         7: .line 49
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getPowerCounter:()Landroid/os/BatteryStats$LongCounter;
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            l2d
         8: .line 50
            ldc 3600000.0
         9: .line 49
            ddiv
            dstore 17 /* powerMah */
        start local 17 // double powerMah
        10: .line 52
            dload 17 /* powerMah */
            dconst_0
            dcmpl
            ifne 14
        11: .line 53
            lload 9 /* idleTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mIdleMa:D
            dmul
            lload 11 /* rxTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mRxMa:D
            dmul
            dadd
            lload 13 /* txTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mTxMa:D
            dmul
            dadd
        12: .line 54
            ldc 3600000.0
        13: .line 53
            ddiv
            dstore 17 /* powerMah */
        14: .line 57
      StackMap locals: com.android.internal.os.BluetoothPowerCalculator com.android.internal.os.BatterySipper android.os.BatteryStats$Uid long long int android.os.BatteryStats$ControllerActivityCounter long long long long double
      StackMap stack:
            aload 1 /* app */
            dload 17 /* powerMah */
            putfield com.android.internal.os.BatterySipper.bluetoothPowerMah:D
        15: .line 58
            aload 1 /* app */
            lload 15 /* totalTimeMs */
            putfield com.android.internal.os.BatterySipper.bluetoothRunningTimeMs:J
        16: .line 59
            aload 1 /* app */
            aload 2 /* u */
            iconst_4
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$Uid.getNetworkActivityBytes:(II)J
            putfield com.android.internal.os.BatterySipper.btRxBytes:J
        17: .line 60
            aload 1 /* app */
            aload 2 /* u */
            iconst_5
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$Uid.getNetworkActivityBytes:(II)J
            putfield com.android.internal.os.BatterySipper.btTxBytes:J
        18: .line 62
            aload 0 /* this */
            dup
            getfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalPowerMah:D
            dload 17 /* powerMah */
            dadd
            putfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalPowerMah:D
        19: .line 63
            aload 0 /* this */
            dup
            getfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalTimeMs:J
            lload 15 /* totalTimeMs */
            ladd
            putfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalTimeMs:J
        20: .line 64
            return
        end local 17 // double powerMah
        end local 15 // long totalTimeMs
        end local 13 // long txTimeMs
        end local 11 // long rxTimeMs
        end local 9 // long idleTimeMs
        end local 8 // android.os.BatteryStats$ControllerActivityCounter counter
        end local 7 // int statsType
        end local 5 // long rawUptimeUs
        end local 3 // long rawRealtimeUs
        end local 2 // android.os.BatteryStats$Uid u
        end local 1 // com.android.internal.os.BatterySipper app
        end local 0 // com.android.internal.os.BluetoothPowerCalculator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0           this  Lcom/android/internal/os/BluetoothPowerCalculator;
            0   21     1            app  Lcom/android/internal/os/BatterySipper;
            0   21     2              u  Landroid/os/BatteryStats$Uid;
            0   21     3  rawRealtimeUs  J
            0   21     5    rawUptimeUs  J
            0   21     7      statsType  I
            1   21     8        counter  Landroid/os/BatteryStats$ControllerActivityCounter;
            4   21     9     idleTimeMs  J
            5   21    11       rxTimeMs  J
            6   21    13       txTimeMs  J
            7   21    15    totalTimeMs  J
           10   21    17       powerMah  D
    MethodParameters:
               Name  Flags
      app            
      u              
      rawRealtimeUs  
      rawUptimeUs    
      statsType      

  public void calculateRemaining(com.android.internal.os.BatterySipper, android.os.BatteryStats, long, long, int);
    descriptor: (Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=19, args_size=6
        start local 0 // com.android.internal.os.BluetoothPowerCalculator this
        start local 1 // com.android.internal.os.BatterySipper app
        start local 2 // android.os.BatteryStats stats
        start local 3 // long rawRealtimeUs
        start local 5 // long rawUptimeUs
        start local 7 // int statsType
         0: .line 70
            aload 2 /* stats */
            invokevirtual android.os.BatteryStats.getBluetoothControllerActivity:()Landroid/os/BatteryStats$ControllerActivityCounter;
         1: .line 69
            astore 8 /* counter */
        start local 8 // android.os.BatteryStats$ControllerActivityCounter counter
         2: .line 72
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getIdleTimeCounter:()Landroid/os/BatteryStats$LongCounter;
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            lstore 9 /* idleTimeMs */
        start local 9 // long idleTimeMs
         3: .line 73
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getTxTimeCounters:()[Landroid/os/BatteryStats$LongCounter;
            iconst_0
            aaload
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            lstore 11 /* txTimeMs */
        start local 11 // long txTimeMs
         4: .line 74
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getRxTimeCounter:()Landroid/os/BatteryStats$LongCounter;
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            lstore 13 /* rxTimeMs */
        start local 13 // long rxTimeMs
         5: .line 75
            lload 9 /* idleTimeMs */
            lload 11 /* txTimeMs */
            ladd
            lload 13 /* rxTimeMs */
            ladd
            lstore 15 /* totalTimeMs */
        start local 15 // long totalTimeMs
         6: .line 76
            aload 8 /* counter */
            invokevirtual android.os.BatteryStats$ControllerActivityCounter.getPowerCounter:()Landroid/os/BatteryStats$LongCounter;
            iload 7 /* statsType */
            invokevirtual android.os.BatteryStats$LongCounter.getCountLocked:(I)J
            l2d
         7: .line 77
            ldc 3600000.0
         8: .line 76
            ddiv
            dstore 17 /* powerMah */
        start local 17 // double powerMah
         9: .line 79
            dload 17 /* powerMah */
            dconst_0
            dcmpl
            ifne 13
        10: .line 81
            lload 9 /* idleTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mIdleMa:D
            dmul
            lload 13 /* rxTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mRxMa:D
            dmul
            dadd
            lload 11 /* txTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mTxMa:D
            dmul
            dadd
        11: .line 82
            ldc 3600000.0
        12: .line 81
            ddiv
            dstore 17 /* powerMah */
        13: .line 86
      StackMap locals: com.android.internal.os.BluetoothPowerCalculator com.android.internal.os.BatterySipper android.os.BatteryStats long long int android.os.BatteryStats$ControllerActivityCounter long long long long double
      StackMap stack:
            dconst_0
            dload 17 /* powerMah */
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalPowerMah:D
            dsub
            invokestatic java.lang.Math.max:(DD)D
            dstore 17 /* powerMah */
        14: .line 93
            aload 1 /* app */
            dload 17 /* powerMah */
            putfield com.android.internal.os.BatterySipper.bluetoothPowerMah:D
        15: .line 94
            aload 1 /* app */
            lconst_0
            lload 15 /* totalTimeMs */
            aload 0 /* this */
            getfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalTimeMs:J
            lsub
            invokestatic java.lang.Math.max:(JJ)J
            putfield com.android.internal.os.BatterySipper.bluetoothRunningTimeMs:J
        16: .line 95
            return
        end local 17 // double powerMah
        end local 15 // long totalTimeMs
        end local 13 // long rxTimeMs
        end local 11 // long txTimeMs
        end local 9 // long idleTimeMs
        end local 8 // android.os.BatteryStats$ControllerActivityCounter counter
        end local 7 // int statsType
        end local 5 // long rawUptimeUs
        end local 3 // long rawRealtimeUs
        end local 2 // android.os.BatteryStats stats
        end local 1 // com.android.internal.os.BatterySipper app
        end local 0 // com.android.internal.os.BluetoothPowerCalculator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lcom/android/internal/os/BluetoothPowerCalculator;
            0   17     1            app  Lcom/android/internal/os/BatterySipper;
            0   17     2          stats  Landroid/os/BatteryStats;
            0   17     3  rawRealtimeUs  J
            0   17     5    rawUptimeUs  J
            0   17     7      statsType  I
            2   17     8        counter  Landroid/os/BatteryStats$ControllerActivityCounter;
            3   17     9     idleTimeMs  J
            4   17    11       txTimeMs  J
            5   17    13       rxTimeMs  J
            6   17    15    totalTimeMs  J
            9   17    17       powerMah  D
    MethodParameters:
               Name  Flags
      app            
      stats          
      rawRealtimeUs  
      rawUptimeUs    
      statsType      

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.android.internal.os.BluetoothPowerCalculator this
         0: .line 99
            aload 0 /* this */
            dconst_0
            putfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalPowerMah:D
         1: .line 100
            aload 0 /* this */
            lconst_0
            putfield com.android.internal.os.BluetoothPowerCalculator.mAppTotalTimeMs:J
         2: .line 101
            return
        end local 0 // com.android.internal.os.BluetoothPowerCalculator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/os/BluetoothPowerCalculator;
}
SourceFile: "BluetoothPowerCalculator.java"
InnerClasses:
  public abstract ControllerActivityCounter = android.os.BatteryStats$ControllerActivityCounter of android.os.BatteryStats
  public abstract LongCounter = android.os.BatteryStats$LongCounter of android.os.BatteryStats
  public abstract Uid = android.os.BatteryStats$Uid of android.os.BatteryStats