docs: protected void addAnnotation(EObject element, XAnnotation annotation,
  			IModificationContext context) throws Exception {
  		final ICompositeNode node = NodeModelUtils.findActualNodeFor(annotation);
  		if (node != null) {
  			final IXtextDocument document = context.getXtextDocument();
  			final int startOffset = node.getOffset();
  			final int parameterOffset = getTools().getOffsetForPattern(document, startOffset,
  					"@\\s*" + toPattern(annotation.getAnnotationType().getQualifiedName()) //$NON-NLS-1$
  					+ "\\s*\\(\\s*"); //$NON-NLS-1$
  			final int insertOffset;
  			if (document.getChar(parameterOffset) == '{') {
  				insertOffset = parameterOffset + getTools().getSpaceSize(document, parameterOffset + 1) + 1;
  			} else {
  				insertOffset = parameterOffset;
  			}
  			final ReplacingAppendable appendable = getTools().getAppendableFactory().create(document,
  					(XtextResource) element.eResource(), insertOffset, 0);
  			appendable.append("\""); //$NON-NLS-1$
  			appendable.append(extractId(this.code));
  			appendable.append("\", "); //$NON-NLS-1$
  			appendable.commitChanges();
  		}
  	}