@Override public Object __tojava__(final Class<?> c) {
        final Class<?> type = PyMultiarray.typeToClass(this._typecode);
        if (this.dimensions.length == 0 || this._typecode == 'F'
                || this._typecode == 'D') { return super.__tojava__(c); // Punt!
        }
        if (c == Object.class
                || (c.isArray() && c.getComponentType().isAssignableFrom(type))) {
            final Object jarray = Array.newInstance(type, this.dimensions);
            final PyMultiarray contiguous = PyMultiarray.ascontiguous(this);
            if (this.dimensions.length == 1) {
                for (int i = 0; i < contiguous.__len__(); i++) {
                    Array.set(
                            jarray,
                            i,
                            Array.get(contiguous.data, contiguous.start + i));
                }
                return jarray;
            }
            else {
                for (int i = 0; i < contiguous.__len__(); i++) {
                    final Object subData = this.get(i).__tojava__(c);
                    Array.set(jarray, i, subData);
                }
                return jarray;
            }

        }
        return super.__tojava__(c);
    }