dx += box.tx; dy += box.ty;   int ttx = x - dx + box.tx; int tty = y - dy + box.ty;     if (box.getBlockFormattingContext() != null) { bfc = box.getBlockFormattingContext();  }    if(!box.contains(ttx,tty)) { if(!box.isChildrenExceedBounds()) {   return null; } else {  } }
	public static Box findElementBox2(Box box, int x, int y, BlockFormattingContext bfc) {		//Uu.p("find element box: " + x + " " + y + " " + box + " " + bfc);		//if(box.element != null) { Uu.p("elem : " + box.element.getNodeName()); }				// skip if no box to look at		if(box == null) {			return null;		}						int dx = 0;		int dy = 0;		// adjust for own absolute positioning		if(bfc != null) {			if(box.absolute) {				dx += bfc.getX();				dy += bfc.getY();                int[] adj = adjustForAbsolute2(box, x, y, bfc);				dx += adj[0];				dy += adj[1];				//Uu.p("abs: " + dx+","+dy);			}		}		// skip null box		// adjust for own x,y		dx += box.x;		dy += box.y;		//Uu.p(dx+","+dy);                //Uu.p("box = " + box);        if(box instanceof LineBox) {            //Uu.p("line box: " + box);        }				// adjust for own insets (margin + border + padding)		dx += box.tx;		dy += box.ty;		//Uu.p(dx+","+dy);				int ttx = x - dx + box.tx;		int tty = y - dy + box.ty;						//Uu.p("bfc = " + bfc);        // go down to the next bfc        if (box.getBlockFormattingContext() != null) {            bfc = box.getBlockFormattingContext();			//Uu.p("new bfc = " + bfc);        }				// if no way it could be inside this box, then return null		if(!box.contains(ttx,tty)) {			if(!box.isChildrenExceedBounds()) {				//System.out.println("it's outside: " + box + " " + x + " " + y);				//Uu.p("outside so skipping");				return null;			} else {				//Uu.p("outside but exceeding children");			}		}		// next test the children		Iterator it = box.getChildIterator();        while (it.hasNext()) {            Box bx = (Box) it.next();			// if returned something, then return it			// shift the bfc			bfc.translate(dx,dy);//box.x,box.y);			Box retbox = findElementBox2(bx,x-dx,y-dy,bfc);			bfc.translate(-dx,-dy);//-box.x,-box.y);			//Uu.p("returned: " + retbox);			if(retbox != null) { return retbox; }		}		// if this box matches, then return it		//Uu.p("here you go");		//Uu.p(x+","+y);		//Uu.p(dx+","+dy);		//Uu.p(box.tx+","+box.ty);		//Uu.p(ttx+","+tty);		if(box.contains(ttx,tty)) {		//if(box.contains(x-dx+box.tx,y-dy+box.ty)) {			//Uu.p("matched: " + box);			return box;		}		return null;	}