code: @FFDCIgnore(Throwable.class)
      private ConnectionSpec createConnectionSpec(ConnectionFactory cciConFactory, String conSpecClassName, String userName, @Sensitive String password) {
          try {
              @SuppressWarnings("unchecked")
              Class<ConnectionSpec> conSpecClass = (Class<ConnectionSpec>) cciConFactory.getClass().getClassLoader().loadClass(conSpecClassName);
              ConnectionSpec conSpec = conSpecClass.newInstance();
              conSpecClass.getMethod("setPassword", String.class).invoke(conSpec, password);
              conSpecClass.getMethod("setUserName", String.class).invoke(conSpec, userName);
              return conSpec;
          } catch (Throwable x) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(this, tc, "Unable to create or populate ConnectionSpec", x.getMessage());
              return null;
          }
      }
docs: Utility method that attempts to construct a ConnectionSpec impl of the specified name,
  which might or might not exist in the resource adapter.
  
  @param cciConFactory    the connection factory class
  @param conSpecClassName possible connection spec impl class name to try
  @param userName         user name to set on the connection spec
  @param password         password to set on the connection spec
  @return ConnectionSpec instance if successful. Otherwise null.