@Test public void testMultipleStopOnceAssert() throws Exception { DrainBarrier barrier = new DrainBarrier(); barrier.stopAndDrainOpsOnce(); try { barrier.stopAndDrainOpsOnce(); fail("Should have asserted"); } catch (AssertionError e) { } }
public void stopAndDrainOpsOnce() throws InterruptedException { stopAndDrainOps(false); }
DrainBarrier { public void stopAndDrainOpsOnce() throws InterruptedException { stopAndDrainOps(false); } }
DrainBarrier { public void stopAndDrainOpsOnce() throws InterruptedException { stopAndDrainOps(false); }  }
DrainBarrier { public void stopAndDrainOpsOnce() throws InterruptedException { stopAndDrainOps(false); }  boolean beginOp(); @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY", justification="First, we do change the state before notify, 2nd, it doesn't even matter") void endOp(); void stopAndDrainOps(); void stopAndDrainOpsOnce(); }
DrainBarrier { public void stopAndDrainOpsOnce() throws InterruptedException { stopAndDrainOps(false); }  boolean beginOp(); @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY", justification="First, we do change the state before notify, 2nd, it doesn't even matter") void endOp(); void stopAndDrainOps(); void stopAndDrainOpsOnce();  }