@Override
public Array clone() {
//XXX return new Array(this, this.flags());
final Array clone = (Array) super.clone();
clone.$ = new double[this.size()];
clone.addr = new DirectArrayRowAddress(clone.$, 0, null, 0, this.size(), this.flags(), true, 1, this.size());
if (this.addr.isContiguous()) {
final int begin = this.addr.col0()+(addr.isFortran() ? 1 : 0);
System.arraycopy(this.$, begin, clone.$, 0, this.size());
} else {
for (int i=0; i<this.size(); i++) {