code: public synchronized boolean addHost(@NotNull Host host, int priority) throws UnsupportedOperationException {
          ProviderWithPrio provider = getProviderContainingHost(host);
          if (provider!=null) {
              if (provider.prio == priority) {
                  return false; //already have it
              } else {
                  removeHost(host);
              }
          }
          IteratingHostProvider iteratingHostProvider = hosts.get(priority);
          if (iteratingHostProvider==null) {
              iteratingHostProvider = new IteratingHostProvider();
              hosts.put(priority, iteratingHostProvider);
              priorities.add(priority);
          }
          iteratingHostProvider.addHost(host);
          return true;
      }
docs: Adds the host with the given priority.
  <p>If the host is here already but with another priority then the prio will be changed, and true is returned.</p>
  <p>Multiple hosts may have the same priority, and are used alternately.</p>
  @param priority The higher the more important.