code: public CuckooFilter<T> copy() {
  		victimLock.readLock();
  		bucketLocker.lockAllBucketsRead();
  		try {
  			return new CuckooFilter<>(hasher.copy(), table.copy(), count, hasVictim, victim.copy(),
  					expectedConcurrency);
  		} finally {
  			bucketLocker.unlockAllBucketsRead();
  			victimLock.tryUnlockRead();
  		}
  	}
docs: Creates a new {@code CuckooFilter} that's a copy of this instance. The
  new instance is equal to this instance but shares no mutable state. Note
  that further {@code #put(Object)}} operations <i>may</i> cause a copy to
  diverge even if the same operations are performed to both filters since
  bucket swaps are essentially random.
  
  @return a copy of the filter