@Nullable
  public static CharSequence getStringAttribute(Constants.@NotNull StringKey keyName,
                                                @NotNull SyntaxNodeDescriptor syntaxRule,
                                                @NotNull StringWithId string,
                                                @NotNull MatchData matchData) {
    CharSequence stringAttribute = syntaxRule.getStringAttribute(keyName);
    if (stringAttribute == null) {
      return null;
    }
    return syntaxRule.hasBackReference(keyName)
           ? replaceGroupsWithMatchDataInCaptures(stringAttribute, string, matchData)
           : stringAttribute;
  }
@Nullable
  public static CharSequence getStringAttribute(Constants.@NotNull StringKey keyName,
                                                @NotNull SyntaxNodeDescriptor syntaxRule,
                                                @NotNull StringWithId string,
                                                @NotNull MatchData matchData)