code: public ResourceBindingImpl binding(String refName, String origBindingName, String type, Map<String, Object> properties) {
          ResourceBindingImpl binding = null;
          for (Iterator<ServiceAndServiceReferencePair<ResourceBindingListener>> it = listeners.getServicesWithReferences(); it.hasNext();) {
              if (binding == null) {
                  if (properties == null) {
                      properties = Collections.emptyMap();
                  }
                  binding = new ResourceBindingImpl(InjectionScope.denormalize(refName), origBindingName, type, properties);
              }
              binding.notify(it.next());
          }
  
          return binding == null || binding.bindingListener == null ? null : binding;
      }
docs: Send notifications that a binding is occurring, and allow binding
  listeners to override the specified binding. If a binding listener
  overrides the specified binding, then a non-null ResourceBindingImpl
  will be returned, {@link ResourceBindingImpl#getBindingName} will
  return non-null (regardless of whether {@code origBindingName} was
  non-null), and {@link ResourceBindingImpl#getBindingListenerName} can
  be called.
  
  @return non-null if a binding listener has overridden and binding