/** {@inheritDoc} */
 @Override
 public T walkInColumnOrder(final FieldMatrixChangingVisitor<T> visitor) {
   final int rows = getRowDimension();
   final int columns = getColumnDimension();
   visitor.start(rows, columns, 0, rows - 1, 0, columns - 1);
   for (int j = 0; j < columns; ++j) {
     for (int i = 0; i < rows; ++i) {
       final T[] rowI = data[i];
       rowI[j] = visitor.visit(i, j, rowI[j]);
     }
   }
   return visitor.end();
 }
 /** {@inheritDoc} */
 @Override
 public T walkInColumnOrder(
     final FieldMatrixChangingVisitor<T> visitor,
     final int startRow,
     final int endRow,
     final int startColumn,
     final int endColumn) {
   checkSubMatrixIndex(startRow, endRow, startColumn, endColumn);
   visitor.start(
       getRowDimension(), getColumnDimension(), startRow, endRow, startColumn, endColumn);
   for (int j = startColumn; j <= endColumn; ++j) {
     for (int i = startRow; i <= endRow; ++i) {
       final T[] rowI = data[i];
       rowI[j] = visitor.visit(i, j, rowI[j]);
     }
   }
   return visitor.end();
 }