docs: public int checkCurrentCacheIsPhysical(Object data) throws DBException, RemoteException
      {
          int iErrorCode = Constants.NORMAL_RETURN;
          Object objTargetRow = m_objCurrentCacheRecord;
          if (objTargetRow != NONE)
          {
              if (m_mapCache != null)
              {
                  int iTargetRow = ((Integer)objTargetRow).intValue();
                  int iCurrentPhysicalRecord = ((Integer)m_objCurrentPhysicalRecord).intValue();
                  if (iTargetRow != iCurrentPhysicalRecord)
                  {   // Current cached record has not been read... read it.
                      try   {
                          if (m_bhtGet)
                              data = m_tableRemote.get(iTargetRow, 1);
                          else
                          {
  //x                            Object dataRecord = m_mapCache.get(iTargetRow);
  //x                            if (dataRecord instanceof Vector)
  //x                            {
  //x                                Object bookmark = ((Vector)dataRecord).get(0);
  //x                                data = m_tableRemote.doSetHandle(bookmark, " *", 0);
  //x                            }
                              throw new DBException("Can't update: Only read-only grid tables can be cached");    // Never (A moveNext is never updated)
                          }
                          if (data instanceof Vector)
                              m_objCurrentPhysicalRecord = objTargetRow;  // Always
                      } catch (RemoteException ex) {
                          throw ex;
                      }
                  }
                  if (data != null)
                      if (data instanceof Vector)
                          m_mapCache.set(iTargetRow, data); // Make sure the cache matches the actual
                  m_objCurrentCacheRecord = objTargetRow;
              }
              if (m_htCache != null)
              {
                  if (!objTargetRow.equals(m_objCurrentPhysicalRecord))
                  {   // Current cached record has not been read... read it.
                      try   {
                          data = m_tableRemote.seek(Constants.EQUALS, Constants.OPEN_NORMAL | Constants.OPEN_DONT_UPDATE_LAST_READ, Constants.PRIMARY_KEY, null, objTargetRow);
                          if (data instanceof Vector)
                          {
                              m_objCurrentPhysicalRecord = objTargetRow;  // Always
  // Don't check the data, since the client doesn't handle mergeToCurrent (This should never happen, since I pass the OPEN_DONT_UPDATE_LAST_READ)
  //                            Object oldData = m_htCache.get(objTargetRow);  // Get the old copy
  //                            if ((oldData != null) && (!oldData.equals(data)))
  //                                iErrorCode = Constants.INVALID_RECORD;  // Must have changed from the last time I read it.
                          }
                          else
                              iErrorCode = Constants.INVALID_RECORD;  // Must have been deleted
                      } catch (RemoteException ex) {
                          throw ex;
                      }
                  }
                  if (data != null)
                      if (data instanceof Vector)
                          m_htCache.put(objTargetRow, data);  // Make sure the cache matches the actual
                  m_objCurrentCacheRecord = objTargetRow;
              }
          }
          return iErrorCode;
      }