public @DialogMessage @Nullable String validate() {
    StringBuilder sb = null;
    for (Map.Entry<String, Set<String>> entry : urls2groups.entrySet()) {
      Set<String> groups = entry.getValue();
      if (groups.size() <= 1) continue;

      if (sb == null) {
        sb = new StringBuilder();
      }
      else {
        if (sb.length() > ourMessageLen) {
          sb.append(ELLIPSIS);
          break;
        }
        sb.append("; ");
      }

      String groupsText = join(groups, ", ");
      sb.append(message("dialog.edit.http.proxies.settings.error.ambiguous.group.patterns.to.text", entry.getKey(), groupsText));
    }

    return sb != null ? message("dialog.edit.http.proxies.settings.error.ambiguous.group.patterns.text", sb.toString()) : null;
  }
public @DialogMessage @Nullable String validate()