code: public Iterator<T> getServices() {
          final List<T> empty = Collections.emptyList();
  
          if (contextRef.get() == null) {
              return empty.iterator();
          }
  
          return new ServiceIterator(elements());
      }
docs: Allocate and return an iterator: The iterator will
  return the service associated with each ServiceReference as it progresses.
  Creation of the iterator does not eagerly resolve services: resolution
  is done only once per service reference, and only when "next" would
  retrieve that service.
  
  @return