# {"id":"partitionSourceFiles","fileNameMappings":{"kotlinx.coroutines.sync.SemaphoreKt":"Semaphore.kt","kotlinx.coroutines.selects.SelectImplementation":"Select.kt"}}
kotlinx.coroutines.sync.SemaphoreAndMutexImpl -> hl6:
# {"id":"sourceFile","fileName":"Semaphore.kt"}
    int permits -> X
    kotlin.jvm.functions.Function3 onCancellationRelease -> Y
      # {"id":"com.android.tools.r8.residualsignature","signature":"Lxk;"}
    java.util.concurrent.atomic.AtomicLongFieldUpdater deqIdx$volatile$FU -> Z
    java.util.concurrent.atomic.AtomicLongFieldUpdater enqIdx$volatile$FU -> c0
    java.util.concurrent.atomic.AtomicIntegerFieldUpdater _availablePermits$volatile$FU -> d0
    long _availablePermits$volatile$FU$offset -> e0
      # {"id":"com.android.tools.r8.synthesized"}
    long head$volatile$FU$offset -> f0
      # {"id":"com.android.tools.r8.synthesized"}
    long tail$volatile$FU$offset -> g0
      # {"id":"com.android.tools.r8.synthesized"}
    1:63:void <clinit>():0:0 -> <clinit>
    1:3:void <init>(int,int):89:89 -> <init>
    1:3:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
      # {"id":"com.android.tools.r8.synthesized"}
    4:9:void <init>(int,int):90:90 -> <init>
    4:9:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    10:18:void <init>(int,int):134:134 -> <init>
    10:18:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    19:20:void <init>(int,int):135:135 -> <init>
    19:20:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    21:22:void <init>(int,int):136:136 -> <init>
    21:22:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    23:24:void <init>(int,int):146:146 -> <init>
    23:24:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    25:34:void <init>(int,int):149:149 -> <init>
    25:34:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    35:36:void <init>(int,int):133:133 -> <init>
    35:36:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    37:40:void SemaphoreAndMutexImpl.<init>(int):0:0 -> <init>
    41:45:void <init>(int,int):133:133 -> <init>
    41:45:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    46:47:void <init>(int,int):132:132 -> <init>
    46:47:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    48:51:void SemaphoreAndMutexImpl.<init>(int):0:0 -> <init>
    52:56:void <init>(int,int):132:132 -> <init>
    52:56:void SemaphoreAndMutexImpl.<init>(int):0 -> <init>
    1:6:int decPermits():232:232 -> a
    1:6:java.lang.Object acquire(kotlin.coroutines.Continuation):172 -> a
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lbb1;)Ljava/lang/Object;"}
    7:10:int decPermits():236:236 -> a
    7:10:java.lang.Object acquire(kotlin.coroutines.Continuation):172 -> a
    11:15:java.lang.Object acquire(kotlin.coroutines.Continuation):174:174 -> a
    16:23:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):399:399 -> a
    16:23:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    24:29:boolean access$addAcquireToQueue(kotlinx.coroutines.sync.SemaphoreAndMutexImpl,kotlinx.coroutines.Waiter):89:89 -> a
    24:29:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):184 -> a
    24:29:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    30:37:int decPermits():232:232 -> a
    30:37:void acquire(kotlinx.coroutines.CancellableContinuation):412 -> a
    30:37:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):188 -> a
    30:37:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    38:43:void acquire(kotlinx.coroutines.CancellableContinuation):195:195 -> a
    38:43:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):188 -> a
    38:43:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    44:49:void acquire(kotlinx.coroutines.CancellableContinuation):194:194 -> a
    44:49:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):188 -> a
    44:49:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    50:53:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):408:408 -> a
    50:53:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    54:64:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):398:398 -> a
    54:64:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    65:67:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):405:405 -> a
    65:67:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    68:68:java.lang.Object acquireSlowPath(kotlin.coroutines.Continuation):406:406 -> a
    68:68:java.lang.Object acquire(kotlin.coroutines.Continuation):179 -> a
    5:15:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):281:281 -> b
      # {"id":"com.android.tools.r8.residualsignature","signature":"(Lov7;)Z"}
    16:17:java.util.concurrent.atomic.AtomicLongFieldUpdater getEnqIdx$volatile$FU():0:0 -> b
    16:17:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):282 -> b
    18:21:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):282:282 -> b
    22:23:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):283:283 -> b
    24:26:int kotlinx.coroutines.sync.SemaphoreKt.access$getSEGMENT_SIZE$p():1:1 -> b
    24:26:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):284 -> b
    27:28:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):284:284 -> b
    29:32:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):431:431 -> b
    33:42:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):432:432 -> b
    43:51:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):433:433 -> b
    52:62:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):434:434 -> b
    63:71:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):435:435 -> b
    72:83:boolean java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet(java.lang.Object,java.lang.Object,java.lang.Object):0:0 -> b
    72:83:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):436 -> b
    84:93:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):437:437 -> b
    94:99:boolean java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet(java.lang.Object,java.lang.Object,java.lang.Object):0:0 -> b
    94:99:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):436 -> b
    100:109:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):440:440 -> b
    110:117:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):285:285 -> b
    118:120:int kotlinx.coroutines.sync.SemaphoreKt.access$getSEGMENT_SIZE$p():1:1 -> b
    118:120:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):286 -> b
    121:123:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):286:286 -> b
    124:130:boolean java.util.concurrent.atomic.AtomicReferenceArray.compareAndSet(int,java.lang.Object,java.lang.Object):0:0 -> b
    124:130:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):442 -> b
    131:134:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):289:289 -> b
    135:140:boolean java.util.concurrent.atomic.AtomicReferenceArray.compareAndSet(int,java.lang.Object,java.lang.Object):0:0 -> b
    135:140:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):442 -> b
    141:142:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getPERMIT$p():1:1 -> b
    141:142:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):294 -> b
    143:144:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getTAKEN$p():1:1 -> b
    143:144:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):294 -> b
    145:150:boolean java.util.concurrent.atomic.AtomicReferenceArray.compareAndSet(int,java.lang.Object,java.lang.Object):0:0 -> b
    145:150:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):443 -> b
    151:153:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):298:298 -> b
    154:161:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):299:299 -> b
    162:169:boolean java.util.concurrent.atomic.AtomicReferenceArray.compareAndSet(int,java.lang.Object,java.lang.Object):0:0 -> b
    162:169:boolean addAcquireToQueue(kotlinx.coroutines.Waiter):443 -> b
    1:2:java.util.concurrent.atomic.AtomicIntegerFieldUpdater get_availablePermits$volatile$FU():0:0 -> c
    1:2:void release():245 -> c
    3:6:void release():245:245 -> c
    7:14:void release():248:248 -> c
    15:25:boolean tryResumeNextFromQueue():314:314 -> c
    15:25:void release():260 -> c
    26:27:java.util.concurrent.atomic.AtomicLongFieldUpdater getDeqIdx$volatile$FU():0:0 -> c
    26:27:boolean tryResumeNextFromQueue():315 -> c
    26:27:void release():260 -> c
    28:31:boolean tryResumeNextFromQueue():315:315 -> c
    28:31:void release():260 -> c
    32:34:int kotlinx.coroutines.sync.SemaphoreKt.access$getSEGMENT_SIZE$p():1:1 -> c
    32:34:boolean tryResumeNextFromQueue():316 -> c
    32:34:void release():260 -> c
    35:36:boolean tryResumeNextFromQueue():316:316 -> c
    35:36:void release():260 -> c
    37:38:boolean tryResumeNextFromQueue():317:317 -> c
    37:38:void release():260 -> c
    39:42:boolean tryResumeNextFromQueue():446:446 -> c
    39:42:void release():260 -> c
    43:52:boolean tryResumeNextFromQueue():447:447 -> c
    43:52:void release():260 -> c
    53:61:boolean tryResumeNextFromQueue():448:448 -> c
    53:61:void release():260 -> c
    62:70:boolean tryResumeNextFromQueue():449:449 -> c
    62:70:void release():260 -> c
    71:77:boolean tryResumeNextFromQueue():450:450 -> c
    71:77:void release():260 -> c
    78:88:boolean java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet(java.lang.Object,java.lang.Object,java.lang.Object):0:0 -> c
    78:88:boolean tryResumeNextFromQueue():451 -> c
    78:88:void release():260 -> c
    89:98:boolean tryResumeNextFromQueue():452:452 -> c
    89:98:void release():260 -> c
    99:104:boolean java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet(java.lang.Object,java.lang.Object,java.lang.Object):0:0 -> c
    99:104:boolean tryResumeNextFromQueue():451 -> c
    99:104:void release():260 -> c
    105:114:boolean tryResumeNextFromQueue():455:455 -> c
    105:114:void release():260 -> c
    115:122:boolean tryResumeNextFromQueue():319:319 -> c
    115:122:void release():260 -> c
    123:125:boolean tryResumeNextFromQueue():320:320 -> c
    123:125:void release():260 -> c
    126:133:boolean tryResumeNextFromQueue():321:321 -> c
    126:133:void release():260 -> c
    134:136:int kotlinx.coroutines.sync.SemaphoreKt.access$getSEGMENT_SIZE$p():1:1 -> c
    134:136:boolean tryResumeNextFromQueue():322 -> c
    134:136:void release():260 -> c
    137:138:boolean tryResumeNextFromQueue():322:322 -> c
    137:138:void release():260 -> c
    139:140:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getPERMIT$p():1:1 -> c
    139:140:boolean tryResumeNextFromQueue():323 -> c
    139:140:void release():260 -> c
    141:147:boolean tryResumeNextFromQueue():457:457 -> c
    141:147:void release():260 -> c
    148:152:int kotlinx.coroutines.sync.SemaphoreKt.access$getMAX_SPIN_CYCLES$p():1:1 -> c
    148:152:boolean tryResumeNextFromQueue():328 -> c
    148:152:void release():260 -> c
    153:156:boolean tryResumeNextFromQueue():458:458 -> c
    153:156:void release():260 -> c
    157:165:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getTAKEN$p():1:1 -> c
    157:165:boolean tryResumeNextFromQueue():329 -> c
    157:165:void release():260 -> c
    166:167:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getPERMIT$p():1:1 -> c
    166:167:boolean tryResumeNextFromQueue():332 -> c
    166:167:void release():260 -> c
    168:169:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getBROKEN$p():1:1 -> c
    168:169:boolean tryResumeNextFromQueue():332 -> c
    168:169:void release():260 -> c
    170:185:boolean java.util.concurrent.atomic.AtomicReferenceArray.compareAndSet(int,java.lang.Object,java.lang.Object):0:0 -> c
    170:185:boolean tryResumeNextFromQueue():459 -> c
    170:185:void release():260 -> c
    186:190:kotlinx.coroutines.internal.Symbol kotlinx.coroutines.sync.SemaphoreKt.access$getCANCELLED$p():1:1 -> c
    186:190:boolean tryResumeNextFromQueue():334 -> c
    186:190:void release():260 -> c
    191:196:boolean tryResumeAcquire(java.lang.Object):340:340 -> c
    191:196:boolean tryResumeNextFromQueue():335 -> c
    191:196:void release():260 -> c
    197:198:boolean tryResumeAcquire(java.lang.Object):341:341 -> c
    197:198:boolean tryResumeNextFromQueue():335 -> c
    197:198:void release():260 -> c
    199:206:boolean tryResumeAcquire(java.lang.Object):342:342 -> c
    199:206:boolean tryResumeNextFromQueue():335 -> c
    199:206:void release():260 -> c
    207:210:boolean tryResumeAcquire(java.lang.Object):344:344 -> c
    207:210:boolean tryResumeNextFromQueue():335 -> c
    207:210:void release():260 -> c
    211:214:boolean tryResumeAcquire(java.lang.Object):348:348 -> c
    211:214:boolean tryResumeNextFromQueue():335 -> c
    211:214:void release():260 -> c
    215:216:boolean tryResumeAcquire(java.lang.Object):349:349 -> c
    215:216:boolean tryResumeNextFromQueue():335 -> c
    215:216:void release():260 -> c
    217:226:boolean kotlinx.coroutines.selects.SelectImplementation.trySelect(java.lang.Object,java.lang.Object):621:621 -> c
    217:226:boolean tryResumeAcquire(java.lang.Object):349 -> c
    217:226:boolean tryResumeNextFromQueue():335 -> c
    217:226:void release():260 -> c
    227:232:boolean tryResumeAcquire(java.lang.Object):351:351 -> c
    227:232:boolean tryResumeNextFromQueue():335 -> c
    227:232:void release():260 -> c
    233:240:void coerceAvailablePermitsAtMaximum():271:271 -> c
    233:240:void release():251 -> c
    241:245:void coerceAvailablePermitsAtMaximum():272:272 -> c
    241:245:void release():251 -> c
    246:252:void coerceAvailablePermitsAtMaximum():273:273 -> c
    246:252:void release():251 -> c
    253:258:void release():252:252 -> c
