class DataFrameBuilder {

    public DataFrame foldByColumn(Object... data) {

        FoldByColumnGeometry g = byColumnGeometry(data.length);

        Object[][] columnarData = new Object[g.width][g.height];

        for (int i = 0; i < g.fullColumns; i++) {
            System.arraycopy(data, i * g.height, columnarData[i], 0, g.height);
        }

        if (g.isLastColumnPartial()) {
            System.arraycopy(data, g.cellsInFullColumns(), columnarData[g.fullColumns], 0, g.partialColumnHeight);
        }

        return fromColumnarData(columnarData);
    }

    protected  DataFrameBuilder(Index columnsIndex);

}