@Override protected Pair<BasicPlane, Integer> cleanPlane() { List<BasicBlock> cleanBlocks = getNewBlocksList(); Pair<Integer, BasicBlock> pickedToClean = pickBlockToClean(); int toMove = pickedToClean.getValue1().getValidCounter(); int active = getActiveBlockIndex(); BasicBlock activeBlock = cleanBlocks.get(active); for (BasicPage page : pickedToClean.getValue1().getPages()) { if (page.isValid()) { activeBlock = activeBlock.move(page.getLp()); } } if (!activeBlock.hasRoomForWrite()) { activeBlock = (BasicBlock) activeBlock.setStatus(BlockStatusGeneral.USED); } cleanBlocks.set(active, activeBlock); cleanBlocks.set(pickedToClean.getValue0(), (BasicBlock) pickedToClean.getValue1().eraseBlock()); Builder builder = getSelfBuilder(); builder.setBlocks(cleanBlocks); return new Pair<>(builder.build(), toMove); }