@Override
    public Iterator<E> iterator() {
        switch (type) {
            case NEIGHBOURS: return new ItrNeigh<E>(grid, size, row, column, inc);
            case ALL: return new ItrAll<E>(grid, size, row, column, inc);
            case ROW: return new ItrRow<E>(grid, size, row, column, inc);
            case COLUMN: return new ItrCol<E>(grid, size, row, column, inc);
            case SQUARE: return new ItrSqr<E>(grid, size, row, column, inc);
            default: return null;
        }
    }