CrossTable implements Iterable<CrossTable.Row> { public void addRow(final MutableBitSet bits) { long n = bits.prevSetBit(bits.capacity()); if(ncol <= n) { ncol = n + 1; } table.add(new Row((int) nrow++, bits)); } CrossTable();  CrossTable(final CrossTable that);  CrossTable(final CrossTable that, long plus); static CrossTable fromContext(final Context<G, M> context); long getNumberOfRows(); long getNumberOfColumns(); void addRow(final MutableBitSet bits); Row getRow(int index); static CrossTable complement(final CrossTable that); static CrossTable horizontalSum(final CrossTable that,
                                           final CrossTable other); static CrossTable verticalSum(final CrossTable that,
                                         final CrossTable other); static CrossTable directProduct(final CrossTable that,
                                           final CrossTable other); Decomposition parallelDecomposition(); Decomposition seriesDecomposition(); ConceptLattice asConceptLattice(final Graph graph); @Override Iterator<Row> iterator(); @Override String toString(); @Override boolean equals(final Object right);  }
@Test public void testAddRow() { table.addRow(bits(4, 5)); assertEquals(table.getNumberOfRows(), 4); assertEquals(table.getNumberOfColumns(), 6); assertEquals(table.getRow(3).intent, bits(4, 5)); }