private Node chooseLeaf(BoundedObject o, Node n)
	{
		assert(n != null);
		if(n.isLeaf()) return n;
		else
		{
			AABB box = o.getBounds();

			int maxOverlap = Integer.MAX_VALUE;
			Node maxnode = null;
			for(int i=0; i<n.children.size(); i++)
			{
				int overlap = n.children.get(i).box.expansionNeeded(box);
				if((overlap < maxOverlap) || (overlap == maxOverlap && n.children.get(i).box.getVolume() < maxnode.box.getVolume()))
				{
					maxOverlap = overlap;
					maxnode = n.children.get(i);
				}
			}
			if(maxnode == null) // Not sure how this could occur
				return null;
			return chooseLeaf(o,maxnode);
		}
	}