protected static String getConcernNameWithMnemonic(
      Concern concern, Set<Character> mnemonicsAlreadyUsed) {
    String concernName = concern.getDisplayName();
    assert concernName != null && !concernName.isEmpty();

    if (concernName.indexOf('&') >= 0) return concernName;

    char[] buf = concernName.toCharArray();

    char[] newBuf = new char[buf.length + 1]; // Add one for the ampersand

    for (int i = 0, newIndex = 0; i < buf.length; ++i, ++newIndex) {
      char c = buf[i];

      if ((newIndex == i)
          && Character.isLetter(c)
          && mnemonicsAlreadyUsed.add(c)) // Returns true if mnemonic doesn't exist
      {
        newBuf[newIndex++] = '&';
      }

      newBuf[newIndex] = c;
    }

    return new String(newBuf);
  }