### Question:
ProtectedBlockFilter implements BlockFilter { public Block getNextSibling(Block block) { Block sibling = block.getNextSibling(); while (sibling != null && isProtectedBlock(sibling)) { sibling = sibling.getNextSibling(); } return sibling; }  @Override List<Block> filter(Block block); List<Block> filter(List<Block> blocks); Block getNextSibling(Block block); List<T> getChildrenByType(Block block, Class<T> blockClass, boolean recurse);  }### Answer:
@Test public void testGetNextSibling() { ProtectedBlockFilter pbf = new ProtectedBlockFilter(); Block b1 = new ParagraphBlock(Collections.emptyList()); Block b2 = new MacroMarkerBlock("code", Collections.emptyMap(), Collections.emptyList(), false); Block b3 = new ParagraphBlock(Collections.emptyList()); new XDOM(Arrays.asList(b1, b2, b3)); assertEquals(b3, pbf.getNextSibling(b1)); }