public void readAttributes(@NotNull Element childNode) {
   for (Element e : childNode.getChildren(OPTION_ELEMENT)) {
     TextAttributesKey name = TextAttributesKey.find(e.getAttributeValue(NAME_ATTR));
     Element valueElement = e.getChild(VALUE_ELEMENT);
     TextAttributes attr =
         valueElement != null ? new TextAttributes(valueElement) : new TextAttributes();
     myAttributesMap.put(name, attr);
     migrateErrorStripeColorFrom14(name, attr);
   }
 }
  @Nullable
  public Map<String, TextAttributesKey> getAdditionalHighlightingTagToDescriptorMap() {
    final Map<String, TextAttributesKey> map = new HashMap<String, TextAttributesKey>();
    map.put("string", BashSyntaxHighlighter.STRING);
    map.put("heredoc", BashSyntaxHighlighter.HERE_DOC);
    map.put("heredocStart", BashSyntaxHighlighter.HERE_DOC_START);
    map.put("heredocEnd", BashSyntaxHighlighter.HERE_DOC_END);
    map.put("backquote", BashSyntaxHighlighter.BACKQUOTE);
    map.put("internalCmd", BashSyntaxHighlighter.INTERNAL_COMMAND);
    map.put("externalCmd", BashSyntaxHighlighter.EXTERNAL_COMMAND);
    map.put("subshellCmd", BashSyntaxHighlighter.SUBSHELL_COMMAND);
    map.put("functionCall", BashSyntaxHighlighter.FUNCTION_CALL);
    map.put("varDef", BashSyntaxHighlighter.VAR_DEF);
    map.put("internalVar", BashSyntaxHighlighter.VAR_USE_BUILTIN);
    map.put("composedVar", BashSyntaxHighlighter.VAR_USE_COMPOSED);

    // we need this to be able to insert << in the text
    // (relies on the current implementation of JetBrain's HighlightsExtractor class)
    map.put("dummy", TextAttributesKey.find("dummy"));
    return map;
  }