### Question:
AsyncTimeout extends Timeout { public final void enter() { if (inQueue) throw new IllegalStateException("Unbalanced enter/exit"); long timeoutNanos = timeoutNanos(); boolean hasDeadline = hasDeadline(); if (timeoutNanos == 0 && !hasDeadline) { return; } inQueue = true; scheduleTimeout(this, timeoutNanos, hasDeadline); }  final void enter(); final boolean exit(); final Sink sink(final Sink sink); final Source source(final Source source);  }### Answer:
@Test public void doubleEnter() throws Exception { a.enter(); try { a.enter(); fail(); } catch (IllegalStateException expected) { } }