@Override void getBlock(URI uri, long tick) { Buff duplicate = null; synchronized (this) { if (Debug.THREADS) ThreadAssert.resume(this, false); int index = Tick.indexOf(_ticks, tick); if (index >= 0) { Buff buff = _buffs[index]; if (buff != null) { duplicate = buff.duplicate(); if (Debug.THREADS) ThreadAssert.exchangeGive(duplicate, duplicate); } } if (Debug.THREADS) ThreadAssert.suspend(this); } if (duplicate != null) { Buff[] duplicates = new Buff[] {duplicate}; if (Debug.THREADS) { ThreadAssert.exchangeTake(duplicate); ThreadAssert.exchangeGive(duplicates, duplicate); } uri.onBlock(this, tick, duplicates, null, true, null, false, null); if (Debug.THREADS) ThreadAssert.exchangeTake(duplicates); duplicate.recycle(); } }