private void moveData(int src, int dst, int len) {
		if (DEBUG_TRACE) {
			debugLog("moveData: " + src + "-" + src+len + " -> " + dst + "-" + dst+len);
			if (DEBUG_DUMP) {
				debugLog(debugPrint(values));
			}
		}
		System.arraycopy(values, src, values, dst, len);

		// Write null into array slots which are not used anymore
		// This is necessary to allow GC to reclaim non used objects.
		int start;
		int end;
		if (src <= dst) {
			start = src;
			end = (dst < src+len) ? dst : src+len;
		} else {
			start = (src > dst+len) ? src : dst+len;
			end = src+len;
		}
		// Inline of Arrays.fill
		assert(end-start <= len);
		for (int i=start; i<end; i++) {
			values[i] = null;
		}

		if (DEBUG_TRACE) {
			if (DEBUG_DUMP) {
				debugLog(debugPrint(values));
			}
		}
	}
Move a range of elements in the values array.
The elements are first copied and the source range is then
filled with null.

@param src	start index of source range
@param dst	start index of destination range
@param len	number of elements to move
jphp-runtime/src/php/runtime/memory/support/GapList.java