code: @Service
    public Object service(InjectionPoint ip)
    {
      Class<?> type = ip.key().rawClass();
      
      Service service = findService(ip.annotations());
      
      if (service == null) {
        throw new IllegalStateException();
      }
      
      ServicesAmp manager = ServicesAmp.current();
      
      String address = service.value();
      
      if (address.isEmpty()) {
        Service apiService = type.getAnnotation(Service.class);
        
        if (apiService != null && ! apiService.value().isEmpty()) {
          address = apiService.value();
        }
        else {
          address = "/" + type.getSimpleName();
        }
      }
      
      ServiceRefAmp serviceRef = manager.service(address);
      
      if (type.isAssignableFrom(ServiceRefAmp.class)) {
        return serviceRef;
      }
      
      return serviceRef.as(type);
    }
docs: /*
  @OnLookup
  public Object lookup(InjectionPoint ip)
  {
  Class<?> type = (Class<?>) ip.type();
  
  Lookup lookup = findLookup(ip.annotations());
  
  if (lookup == null) {
  throw new IllegalStateException();
  }
  
  ServicesAmp manager = ServicesAmp.current();
  
  ServiceRefAmp serviceRef = manager.service(lookup.value());
  
  if (type.isAssignableFrom(ServiceRefAmp.class)) {
  return serviceRef;
  }
  
  return serviceRef.as(type);
  }
  
  private Lookup findLookup(Annotation...qualifiers)
  {
  for (Annotation ann : qualifiers) {
  if (ann.annotationType().equals(Lookup.class)) {
  return (Lookup) ann;
  }
  }
  
  return null;
  }