docs: public static ICompositeNode findActualNodeFor(/* @Nullable */ EObject semanticObject) {
  		ICompositeNode node = getNode(semanticObject);
  		if (node != null) {
  			while(GrammarUtil.containingAssignment(node.getGrammarElement()) == null) {
  				ICompositeNode parent = node.getParent();
  				if (parent != null && !parent.hasDirectSemanticElement() && !GrammarUtil.isEObjectFragmentRuleCall(parent.getGrammarElement())) {
  					node = parent;
  				} else {
  					break;
  				}
  			}
  		}
  		return node;
  	}