docs: @Override
      public InjectionBinding<WebServiceRef> createInjectionBinding(WebServiceRef webServiceRef, Class<?> instanceClass, Member member, String jndiName) throws InjectionException {
          InjectionBinding<WebServiceRef> binding;
  
          WebServiceRefInfo wsrInfo = WebServiceRefInfoBuilder.buildWebServiceRefInfo(webServiceRef, instanceClass.getClassLoader());
          wsrInfo.setClientMetaData(JaxWsMetaDataManager.getJaxWsClientMetaData(ivNameSpaceConfig.getModuleMetaData()));
          if (member == null) { //Annotated on class
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Creating new injection binding for @WebServiceRef annotation found on the " + instanceClass.getName() + " class.");
              }
  
              this.validateAndSetClassLevelWebServiceRef(webServiceRef, instanceClass, wsrInfo);
  
              // Now add the @HandlerChain instance
              javax.jws.HandlerChain hcAnnot = instanceClass.getAnnotation(javax.jws.HandlerChain.class);
              if (hcAnnot != null) {
                  wsrInfo.setHandlerChainAnnotation(hcAnnot);
                  wsrInfo.setHandlerChainDeclaringClassName(instanceClass.getName());
              }
  
              binding = new WebServiceRefBinding(wsrInfo, ivNameSpaceConfig);
  
          } else if (member instanceof Method) { //Annotated on method
              Method method = (Method) member;
              wsrInfo.setJndiName(jndiName);
  
              // Send the wsrInfo to this call so that both the 'type' and 'value' properties can be set correctly
              this.validateAndSetMemberLevelWebServiceRef(webServiceRef, method, wsrInfo);
  
              // Now add the @HandlerChain instance
              javax.jws.HandlerChain hcAnnot = method.getAnnotation(javax.jws.HandlerChain.class);
              if (hcAnnot != null) {
                  wsrInfo.setHandlerChainAnnotation(hcAnnot);
                  wsrInfo.setHandlerChainDeclaringClassName(instanceClass.getName());
              }
  
              //MTOM, RespectBinding, Addressing  
              //Merge any features that might be set on the field (@MTOM, @RespectBinding, @Addressing)
              //Note that we only support features for port-component-ref type injections.
              //For a port-component-ref type injection, the "Service SEI class" will be set on
              //'wsrMetadata'.
              if (wsrInfo.getServiceRefTypeClassName() != null) {
                  handleMTOM(webServiceRef, wsrInfo, method.getAnnotation(MTOM.class));
                  handleRespectBinding(webServiceRef, wsrInfo, method.getAnnotation(RespectBinding.class));
                  handleAddressing(webServiceRef, wsrInfo, method.getAnnotation(Addressing.class));
              }
  
              // Create binding for @WebServiceRef annotation
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Creating new injection binding for the @WebServiceRef annotation on the " + method.getName() + " method in the "
                               + method.getDeclaringClass().getName() + " class.");
              }
              binding = new WebServiceRefBinding(wsrInfo, ivNameSpaceConfig);
              addInjectionBinding(binding);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Successfully created an injection binding for the @WebServiceRef annotation on the " + method.getName() + " method in the "
                               + method.getDeclaringClass().getName() + " class.");
              }
  
          } else { //Annotated on field
              Field field = (Field) member;
              wsrInfo.setJndiName(jndiName);
  
              // Send the wsrInfo to this call so that both the 'type' and 'value' properties can be set correctly
              this.validateAndSetMemberLevelWebServiceRef(webServiceRef, field, wsrInfo);
  
              // Now add the @HandlerChain instance
              javax.jws.HandlerChain hcAnnot = field.getAnnotation(javax.jws.HandlerChain.class);
              if (hcAnnot != null) {
                  wsrInfo.setHandlerChainAnnotation(hcAnnot);
                  wsrInfo.setHandlerChainDeclaringClassName(instanceClass.getName());
              }
  
              //MTOM, RespectBinding, Addressing  
              // Merge any features that might be set on the field (@MTOM, @RespectBinding, @Addressing)
              // Note that we only support features for port-component-ref type injections.
              // For a port-component-ref type injection, the "Service SEI class" will be set on
              // 'wsrMetadata'.
              if (wsrInfo.getServiceRefTypeClassName() != null) {
                  handleMTOM(webServiceRef, wsrInfo, field.getAnnotation(MTOM.class));
                  handleRespectBinding(webServiceRef, wsrInfo, field.getAnnotation(RespectBinding.class));
                  handleAddressing(webServiceRef, wsrInfo, field.getAnnotation(Addressing.class));
              }
  
              // Create binding for @WebServiceRef annotation
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Creating new injection binding for the @WebServiceRef annotation on the " + field.getName() + " field in the "
                               + field.getDeclaringClass().getName() + " class.");
              }
              binding = new WebServiceRefBinding(wsrInfo, ivNameSpaceConfig);
              addInjectionBinding(binding);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Successfully created an injection binding for the @WebServiceRef annotation on the " + field.getName() + " field in the "
                               + field.getDeclaringClass().getName() + " class. HashCode=" + Integer.toHexString(System.identityHashCode(this)));
              }
          }
  
          return binding;
      }