### Question:
LayerHash implements Layerable<KeyType> { public synchronized boolean remove(KeyType key) { if(hash.containsKey(key)) { hash.remove(key); zlist.remove(key); return true; } else { return false; } }  int size(); ValueType get(KeyType key); List<KeyType> getKeysAsList(); synchronized void addToTop(KeyType key, ValueType value); synchronized void addToBottom(KeyType key, ValueType value); synchronized boolean moveToTop(KeyType element); synchronized boolean moveAbove(KeyType objectToMove, KeyType reference); synchronized boolean moveBeneath(KeyType objectToMove, KeyType reference); synchronized boolean moveToBottom(KeyType key); synchronized boolean moveUp(KeyType key); synchronized boolean moveDown(KeyType key); @Override List<KeyType> elements(); List<KeyType> keys(); synchronized boolean remove(KeyType key); ValueType getTop(); ValueType getBottom(); ValueType getAbove(KeyType key); ValueType getBeneath(KeyType key);  }### Answer:
@Test public void remove() { layerHash.remove(obj2); assertEquals(2, layerHash.size()); assertEquals(obj1, layerHash.getAbove(obj3)); }