code: public String encode(EObject obj, EReference ref, INode node) {
  		if (isUseIndexFragment(obj.eResource())) {
  			return getIndexFragment(obj, ref, node);
  		}
  		StringBuilder fragment = new StringBuilder(4).append(XTEXT_LINK).append(SEP);
  		appendShortFragment(obj, fragment);
  		fragment.append(SEP);
  		fragment.append(toShortExternalForm(obj.eClass(), ref)).append(SEP);
  		getRelativePath(fragment, NodeModelUtils.getNode(obj), node);
  		return fragment.toString();
  	}
docs: encodes the given three parameters into a string, so that they can be
  retrieved from a resource using {@link #decode(Resource, String)}
  
  @param obj the feature holder
  @param ref the cross reference
  @param node the node that provided the value for the reference
  @return a portable string that may be used as a {@link URI#fragment() fragment}