docs: @Override
      public Map<String, Object> cacheVendorConnectionProps(Connection sqlConn) throws SQLException {
          try {
              Class<?> c = OracleConnection.get();
              if (c == null)
                  OracleConnection.set(c = WSManagedConnectionFactoryImpl.priv.loadClass(mcf.jdbcDriverLoader, oracle_jdbc_OracleConnection));
  
              Map<String, Object> tempProps = new HashMap<String, Object>();
  
              if (driverMajorVersion == NOT_CACHED) {
                  driverMajorVersion = sqlConn.getMetaData().getDriverMajorVersion();
              }
  
              // If tempProps is changed then WSRdbManagedConnectionImpl.VENDOR_PROPERTY_SETTERS must be updated
              Method m = getDefaultExecuteBatch.get();
              if (m == null)
                  getDefaultExecuteBatch.set(m = c.getMethod("getDefaultExecuteBatch"));
              tempProps.put("DefaultExecuteBatch", m.invoke(sqlConn));
  
              m = getDefaultRowPrefetch.get();
              if (m == null)
                  getDefaultRowPrefetch.set(m = c.getMethod("getDefaultRowPrefetch"));
              tempProps.put("DefaultRowPrefetch", m.invoke(sqlConn));
  
              if (driverMajorVersion > 10) {
                  m = getDefaultTimeZone.get();
                  if (m == null)
                      getDefaultTimeZone.set(m = c.getMethod("getDefaultTimeZone"));
                  tempProps.put("DefaultTimeZone", m.invoke(sqlConn));
              }
  
              m = getIncludeSynonyms.get();
              if (m == null)
                  getIncludeSynonyms.set(m = c.getMethod("getIncludeSynonyms"));
              tempProps.put("IncludeSynonyms", m.invoke(sqlConn));
  
              m = getRemarksReporting.get();
              if (m == null)
                  getRemarksReporting.set(m = c.getMethod("getRemarksReporting"));
              tempProps.put("RemarksReporting", m.invoke(sqlConn));
  
              m = getRestrictGetTables.get();
              if (m == null)
                  getRestrictGetTables.set(m = c.getMethod("getRestrictGetTables"));
              tempProps.put("RestrictGetTables", m.invoke(sqlConn));
  
              m = getSessionTimeZone.get();
              if (m == null)
                  getSessionTimeZone.set(m = c.getMethod("getSessionTimeZone"));
              tempProps.put("SessionTimeZone", m.invoke(sqlConn));
  
              return tempProps;
          } catch (RuntimeException x) {
              throw x;
          } catch (Exception x) {
              throw AdapterUtil.toSQLException(x);
          }
      }