public static Iterable<? extends Iterable<?>> table( int numberOfColumns, Object... data ) {
        if( data.length % numberOfColumns != 0 ) {
            throw new IllegalArgumentException( "The provided number of data elements '" + data.length +
                    "' is not a multiple of " + numberOfColumns );
        }

        return Iterables.partition( Arrays.asList( data ), numberOfColumns );
    }
Creates a table, i.e. a list of lists, with {@code numberOfColumns} columns from the given {@code data} including the header.
<p>
Example:
<pre>{@code
    table(2,
       "name", "age", // header
       "Peter", 20,   // first row of data
       "Susan", 35);  // second row of data
}</pre>

@param numberOfColumns the number of columns the resulting table should have
@param data            the data of the table represented as a one-dimensional list,
                       the number of entries must be a multiple of {@code numberOfColumns}.
                       The first {@code numberOfColumns} elements are taken as the header of the table,
                       the remaining values as data
@return a list of list that contains the same data as {@code data}, but in a two-dimensional form
@throws java.lang.IllegalArgumentException if {@code data.length % numberOfColumns != 0}
jgiven-core/src/main/java/com/tngtech/jgiven/DataTables.java