if (isVague()) { omd = _findClosest(x, y, limit, true); if (omd != null) { selectAll(); return this; } }
    protected synchronized OMGeometry _selectClosest(int x, int y, float limit) {	OMDist omd = new OMDist();	OMDist tomd;	ListIterator iterator;        OMGeometry ret = null;	OMGeometry graphic, current;	OMGraphicList omgl;        float closestDistance = Float.MAX_VALUE;	float currentDistance;	if (size() != 0) {	    if (traverseMode == FIRST_ADDED_ON_TOP) {		iterator = graphics.listIterator();		while (iterator.hasNext()) {		    tomd = selectClosestTest(omd, 0, (OMGeometry) iterator.next(), 					     x, y, limit);		    if (tomd == null) continue;		    omd = tomd;  // for style		    if (omd.d == 0) break;		}	    } else {		iterator = graphics.listIterator(graphics.size());		while (iterator.hasPrevious()) {		    tomd = selectClosestTest(omd, 0, (OMGeometry) iterator.previous(), 					     x, y, limit);		    if (tomd == null) continue;		    omd = tomd;  // for style		    if (omd.d == 0) break;		}	    }	}	return omd.omg;    }