class Matrix {

  public final Matrix transpose() {
    final Matrix transposedMatrix = this.create(this.getColumnCount(), this.getRowCount());
    this.forEach((r, c, v) -> transposedMatrix.setAtUnchecked(c, r, v));
    return transposedMatrix;
  }

  protected  Matrix(final int numRows, final int numCols);

}