### Question:
CellProvider { public Object getSource(Cell cell) { return getSource(cell, Predicates.alwaysTrue()); } private  CellProvider(Mapper<?, ?> enclosingMapper); static CellProvider fromMapper(Mapper<?, ?> mapper); List<Cell> getCells(final HasParent<?> source); List<Cell> getCellsOnPath(Iterable<?> sourcePath); List<Cell> getCellsOnPath(Iterator<?> sourcePath); List<Cell> getCells(Object source); Object getSource(Cell cell); Object getSource(Cell cell, Predicate<Object> predicate);  }### Answer:
@Test public void predicate() { Cell c = rootCell.children().get(1).children().get(0); assertEquals("c", c.get(TextCell.TEXT)); Object source = provider.getSource(c); assertEquals("c", source); Object filteredSource = provider.getSource(c, new Predicate<Object>() { @Override public boolean apply(Object input) { return !(input instanceof String); } }); assertEquals(Arrays.asList("c", "d", "e"), filteredSource); }