class Array implements Iterable<T> {

  Array(DataType dataType, int[] shape) {
    this.dataType = dataType;
    this.rank = shape.length;
    this.indexFn = IndexFn.builder(shape).build();
  }

    Array(DataType dataType, int[] shape);
    Array(DataType dataType, IndexFn indexFn);

}