private RTreeNode firstLeafSearch(T o, RTreeNode n)
	{
		assert(n != null);
		if (n.isLeaf())
		{
			return n.data.contains(o)?n:null;
		}
		else
		{
			for (int i = 0; i < n.children.size(); i++)
			{
				final RTreeNode n2=n.children.get(i);
				if(n2.isLeaf() && n2.data.contains(o))
					return n2;
				final RTreeNode n3=firstLeafSearch(o,n2);
				if(n3!=null)
					return n3;
			}
			return null;
		}
	}