code: public static XAbstractFeatureCall getRootFeatureCall(XAbstractFeatureCall featureCall,
  			XExpression container, List<JvmFormalParameter> containerParameters) {
  		if (hasLocalParameters(featureCall, container, containerParameters)
  				|| !(featureCall instanceof XMemberFeatureCall || featureCall instanceof XFeatureCall)) {
  			return null;
  		}
  		XAbstractFeatureCall current = featureCall;
  		EObject currentContainer = current.eContainer();
  		while (currentContainer != null) {
  			if (currentContainer instanceof XMemberFeatureCall || currentContainer instanceof XFeatureCall) {
  				final XAbstractFeatureCall c = (XAbstractFeatureCall) currentContainer;
  				if (hasLocalParameters(c, container, containerParameters)) {
  					return current;
  				}
  				current = c;
  				currentContainer = current.eContainer();
  			} else {
  				return current;
  			}
  		}
  		return current;
  	}
docs: Replies the root feature call into a sequence of feature calls that has
  not reference to elements declared within the container, and that are
  not one of the container's parameters.
  
  @param featureCall the leaf feature call.
  @param container the container of the feature call.
  @param containerParameters the parameters of the container.
  @return the root feature call, or {@code null} if there is no root feature call.
  @since 0.8.6
  @see #getRootFeatureCall(XAbstractFeatureCall)