granularity level: instruction

		.class public final Lo0/n;
.super Ljava/lang/Object;
.source "SourceFile"


.field public final a:Ljava/lang/Object;
.field public b:Ljava/util/ArrayDeque;
.field public c:Z


.method public constructor <init>()V
	.locals 1

	invoke-direct {p0}, Ljava/lang/Object;-><init>()V
	new-instance v0, Ljava/lang/Object;
	invoke-direct {v0}, Ljava/lang/Object;-><init>()V
	iput-object v0, p0, Lo0/n;->a:Ljava/lang/Object;
	return-void
.end method

.method public final a(Lo0/m;)V
	.locals 2

	iget-object v0, p0, Lo0/n;->a:Ljava/lang/Object;
	monitor-enter v0
	:try_start_0
	iget-object v1, p0, Lo0/n;->b:Ljava/util/ArrayDeque;
	if-nez v1, :cond_0
	new-instance v1, Ljava/util/ArrayDeque;
	invoke-direct {v1}, Ljava/util/ArrayDeque;-><init>()V
	iput-object v1, p0, Lo0/n;->b:Ljava/util/ArrayDeque;
	:cond_0
	iget-object v1, p0, Lo0/n;->b:Ljava/util/ArrayDeque;
	invoke-virtual {v1, p1}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z
	monitor-exit v0
	return-void
	:catchall_0
	move-exception p1
	monitor-exit v0
	:try_end_0
	.catchall {:try_start_0 .. :try_end_0} :catchall_0
	throw p1
.end method

.method public final b(Lo0/o;)V
	.locals 2

	iget-object v0, p0, Lo0/n;->a:Ljava/lang/Object;
	monitor-enter v0
	:try_start_0
	iget-object v1, p0, Lo0/n;->b:Ljava/util/ArrayDeque;
	if-eqz v1, :cond_2
	iget-boolean v1, p0, Lo0/n;->c:Z
	if-eqz v1, :cond_0
	goto :goto_1
	:cond_0
	const/4 v1, 0x1
	iput-boolean v1, p0, Lo0/n;->c:Z
	monitor-exit v0
	:try_end_0
	.catchall {:try_start_0 .. :try_end_0} :catchall_1
	:goto_0
	iget-object v1, p0, Lo0/n;->a:Ljava/lang/Object;
	monitor-enter v1
	:try_start_1
	iget-object v0, p0, Lo0/n;->b:Ljava/util/ArrayDeque;
	invoke-virtual {v0}, Ljava/util/ArrayDeque;->poll()Ljava/lang/Object;
	move-result-object v0
	check-cast v0, Lo0/m;
	if-nez v0, :cond_1
	const/4 p1, 0x0
	iput-boolean p1, p0, Lo0/n;->c:Z
	monitor-exit v1
	return-void
	:cond_1
	monitor-exit v1
	:try_end_1
	.catchall {:try_start_1 .. :try_end_1} :catchall_0
	invoke-interface {v0, p1}, Lo0/m;->a(Lo0/o;)V
	goto :goto_0
	:catchall_0
	move-exception p1
	:try_start_2
	monitor-exit v1
	:try_end_2
	.catchall {:try_start_2 .. :try_end_2} :catchall_0
	throw p1
	:goto_1
	:try_start_3
	:cond_2
	monitor-exit v0
	return-void
	:catchall_1
	move-exception p1
	monitor-exit v0
	:try_end_3
	.catchall {:try_start_3 .. :try_end_3} :catchall_1
	throw p1
.end method