public Node NodeAtPoint(Point p, CaretLocation result) { NodesList list = GetChildrenNodes(); for (Node n = list.Next(); n != null; n = list.Next()) { if (n.GetCaretPos(p) != CaretPosition.None) { return(n.NodeAtPoint(p, result)); } } result.pos = GetCaretPos(p); if (result.pos == CaretPosition.None) { return(null); } return(this); }