class ArrayByte extends Array<Byte> {

  @Override
  void arraycopy(int srcPos, Object dest, int destPos, long length) {
    if (indexFn.isCanonicalOrder()) {
      storage.arraycopy(srcPos, dest, destPos, length);
    } else {
      byte[] ddest = (byte[]) dest;
      int destIndex = destPos;
      Iterator<Integer> iter = indexFn.iterator(srcPos, length);
      while (iter.hasNext()) {
        ddest[destIndex++] = storage.get(iter.next());
      }
    }
  }

  public  ArrayByte(DataType dtype, int[] shape);
  public  ArrayByte(DataType dtype, int[] shape, Storage<Byte> storage);
  private  ArrayByte(DataType dtype, IndexFn indexFn, Storage<Byte> storageD);

}