@SuppressWarnings("unchecked") public static <T>T[][] buildArray(final Field<T> field,final int rows,final int columns){
  final T[][] array;
  if (columns < 0) {
    T[] dummyRow=buildArray(field,0);
    array=(T[][])Array.newInstance(dummyRow.getClass(),rows);
  }
 else {
    array=(T[][])Array.newInstance(field.getRuntimeClass(),new int[]{rows,columns});
    for (int i=0; i < rows; ++i) {
      Arrays.fill(array[i],field.getZero());
    }
  }
  return array;
}

@ SuppressWarnings ( "unchecked" ) public static < T > T [ ] [ ] buildArray ( final Field < T > field , final int rows , final int columns ) { final T [ ] [ ] array ; if ( columns < 0 ) { T [ ] dummyRow = buildArray ( field , 0 ) ; array = ( T [ ] [ ] ) Array . newInstance ( dummyRow . getClass ( ) , rows ) ; } else { array = ( T [ ] [ ] ) Array . newInstance ( field . getRuntimeClass ( ) , new int [ ] { rows , columns } ) ; for ( int i = 0 ; i < rows ; ++ i ) { Arrays . fill ( array [ i ] , field . getZero ( ) ) ; } } return array ; }
build a double dimension array of elements . < p > arrays are filled with field . getzero ( )
