### Question:
AbstractTabularBuilder { public AnchorTabular build(InputStream csvInputStream) throws IOException { return build(csvInputStream, false, false); }  AnchorTabular build(InputStream csvInputStream); AnchorTabular build(InputStream csvInputStream, boolean excludeFirst); AnchorTabular build(InputStream csvInputStream, boolean excludeFirst, boolean trim); AnchorTabular build(Collection<String[]> dataCollection); AnchorTabular build(Collection<String[]> dataCollection, boolean excludeFirst); @SuppressWarnings("unchecked") T setDoBalance(boolean doBalance);  }### Answer:
@Test public void testPostBuildHandler() throws IOException { TestBuilder builder = new TestBuilder(); builder.addColumn(new IgnoredColumn("1")); builder.addColumn(new IgnoredColumn("2")); builder.addColumn(new IgnoredColumn("3")); final AtomicInteger timesListenerCalled = new AtomicInteger(0); final AtomicBoolean consumerCalled = new AtomicBoolean(false); builder.addColumn(new StringColumn("4") { @Override public Consumer<String[]> getPostBuildListener() { timesListenerCalled.getAndIncrement(); return column -> { if (consumerCalled.get()) fail("Only to be called once"); consumerCalled.getAndSet(true); assertArrayEquals(new String[] {"thirdattr1", "thirdattr2"}, column); }; } }); builder.addColumn(new IgnoredColumn("5")); builder.build(getTestCSV(), true); assertEquals(2, timesListenerCalled.get()); assertTrue(consumerCalled.get()); }