code: @Override
  	@Pure
  	public P getNearestEnd(double x, double y) {
  		return NearNodeSelector.getNearest(getTree(), x, y);
  	}
docs: {@inheritDoc}
  The nearest neighbor (NN) algorithm, to find the NN to a given target
  point not in the tree, relies on the ability to discard large portions
  of the tree by performing a simple test. To perform the NN calculation,
  the tree is searched in a depth-first fashion, refining the nearest
  distance. First the root node is examined with an initial assumption
  that the smallest distance to the next point is infinite. The subdomain
  (right or left), which is a hyperrectangle, containing the target point
  is searched. This is done recursively until a final minimum region
  containing the node is found. The algorithm then (through recursion)
  examines each parent node, seeing if it is possible for the other
  domain to contain a point that is closer. This is performed by
  testing for the possibility of intersection between the hyperrectangle
  and the hypersphere (formed by target node and current minimum radius).
  If the rectangle that has not been recursively examined yet does not
  intersect this sphere, then there is no way that the rectangle can
  contain a point that is a better nearest neighbour. This is repeated
  until all domains are either searched or discarded, thus leaving the
  nearest neighbour as the final result. In addition to this one also
  has the distance to the nearest neighbour on hand as well. Finding the
  nearest point is an O(logN) operation.