docs: @Override
      Object invokeOperation(Object implObject, Method method, Object[] args)
                      throws IllegalAccessException, IllegalArgumentException, InvocationTargetException,
                      SQLException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled(); 
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(this, tc, "invokeOperation: " + method.getName(), args); 
  
          Object result;
  
          // Check for single parameter setter methods
          Class<?>[] types = method.getParameterTypes(); 
  
          if (types != null && types.length == 1 && method.getName().startsWith("set")
              && void.class.equals(method.getReturnType())) {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(this, tc, "invokeOperation: " + method.getName(), "not supported"); 
              throw new SQLFeatureNotSupportedException(method.getName());
          } else // Not modifying the configuration, use the instance for the current config ID.
          {
              implObject = mcf.getUnderlyingDataSource();
              if (isTraceOn && tc.isDebugEnabled())
                  Tr.debug(this, tc, "invoke on " + AdapterUtil.toString(implObject)); 
              result = method.invoke(implObject, args);
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(this, tc, "invokeOperation: " + method.getName(), result); 
          return result;
      }