void (TreeElement element, ASTNode original, Map<Object, Object> encodingState) { boolean shallEncodeEscapedTexts = shallEncodeEscapedTexts(original, encodingState); if (original instanceof CompositeElement) { IElementType originalType = original.getElementType(); if (originalType == JavaElementType.JAVA_CODE_REFERENCE || originalType == JavaElementType.REFERENCE_EXPRESSION) { encodeInformationInRef(element, original); } else if (originalType == JavaElementType.MODIFIER_LIST) { ASTNode parent = original.getTreeParent(); IElementType parentType = parent.getElementType(); if (parentType == JavaElementType.FIELD || parentType == JavaElementType.METHOD || parentType == JavaElementType.ANNOTATION_METHOD) { ASTNode grand = parent.getTreeParent(); if (grand.getElementType() == JavaElementType.CLASS && (SourceTreeToPsiMap.<PsiClass>treeToPsiNotNull(grand).isInterface() || SourceTreeToPsiMap.<PsiClass>treeToPsiNotNull(grand).isAnnotationType())) { element.putUserData(INTERFACE_MODIFIERS_FLAG_KEY, Boolean.TRUE); } } } } else if (shallEncodeEscapedTexts && original instanceof LeafElement && !(original instanceof OuterLanguageElement) && !isInCData(original)) { String originalText = element.getText(); String unescapedText = StringUtil.unescapeXmlEntities(originalText); if (!Objects.equals(originalText, unescapedText)) { LeafElement replaced = ((LeafElement)element).rawReplaceWithText(unescapedText); element.putCopyableUserData(ALREADY_ESCAPED, null); replaced.putCopyableUserData(ALREADY_ESCAPED, null); } } }