code: @Override
      public final <T> ElementIterator<T> getServices(Class<T> type) {
          Require.nonNull(type, "type");
  
          final Iterator<T> services = this.getServiceStrategy.getServices(
                  this.injector, type);
          return ElementIterator.wrap(services);
      }
docs: Gets all services of the given type which have been bound during
  initialization. The concrete behavior of this method is as follows:
  <ol>
  <li>If there is a multi binding for the given type, an iterator over the
  bound services is returned.</li>
  <li>If there is no multi binding, we try to resolve a single binding for
  the given type. If present, an iterator over the single service is
  returned.</li>
  <li>If there is neither a multi binding nor a single binding for the
  given type, an empty iterator is returned.</li>
  </ol>