private void removeOld() {
		double[] location = this.locationStack.removeFirst();
		KdTree<T> cursor = this;
		// Find the node where the point is
		while (cursor.locations == null) {
			if (location[cursor.splitDimension] > cursor.splitValue) {
				cursor = cursor.right;
			} else {
				cursor = cursor.left;
			}
		}
		for (int i = 0; i < cursor.locationCount; i++) {
			if (cursor.locations[i] == location) {
				System.arraycopy(cursor.locations, i + 1, cursor.locations, i, cursor.locationCount - i - 1);
				cursor.locations[cursor.locationCount - 1] = null;
				System.arraycopy(cursor.data, i + 1, cursor.data, i, cursor.locationCount - i - 1);
				cursor.data[cursor.locationCount - 1] = null;
				do {
					cursor.locationCount--;
					cursor = cursor.parent;
				} while (cursor.parent != null);
				return;
			}
		}
		// If we got here... we couldn't find the value to remove. Weird...
	}