private void removeBlocks(ReversiblePeekingIterable<Node> nodes) {
   for (Node child : nodes) {
     if (child instanceof Block) {
       allBlockParsersMap.removeValue(child);
     }
   }
 }
 @Override
 public void blockRemovedWithChildren(Block node) {
   validateUnlinked(node);
   allBlockParsersMap.removeValue(node);
   removeBlocks(node.getChildren());
 }
 @Override
 public void blockRemovedWithDescendants(Block node) {
   validateUnlinked(node);
   allBlockParsersMap.removeValue(node);
   removeBlocks(node.getDescendants());
 }
 @Override
 public void blockRemoved(Block node) {
   validateUnlinked(node);
   allBlockParsersMap.removeValue(node);
 }