@Override public void map() { for (int d = 2; d < position.length; ++d) min[d] = max[d] = position[d]; min[0] = target.min(0); min[1] = target.min(1); max[0] = target.max(0); max[1] = target.max(1); final FinalInterval sourceInterval = new FinalInterval(min, max); final Cursor<B> targetCursor = target.cursor(); final RandomAccess<A> sourceRandomAccess = source.randomAccess(sourceInterval); sourceRandomAccess.setPosition(position); while (targetCursor.hasNext()) { final B b = targetCursor.next(); sourceRandomAccess.setPosition(targetCursor.getLongPosition(0), 0); if (numDimensions > 1) sourceRandomAccess.setPosition(targetCursor.getLongPosition(1), 1); converter.convert(sourceRandomAccess.get(), b); } }