docs: public Object seek(String strSeekSign, int iOpenMode, String strKeyArea, String strFields, Object objKeyData) throws DBException, RemoteException
      {
          m_objCurrentLockedRecord = NONE;
          m_objCurrentCacheRecord = NONE;
          try   {
              Object objData = null;
              if ((m_mapCache == null) && (m_htCache == null))
                  m_htCache = new Hashtable<Object,Object>();    // Okay, start caching keys and records
              if (m_htCache != null)
              {
                  if ((strKeyArea == null)
                      || (strKeyArea.length() == 0)
                      || (strKeyArea.equalsIgnoreCase(Constants.PRIMARY_KEY)))
                          if (objKeyData instanceof Integer)
                              objData = m_htCache.get(objKeyData);    // Try to find this in the cache
              }
              m_mapCache = null;  // If seek is used, the grid cache is no good anymore.
              if (objData != null)
                  m_objCurrentCacheRecord = objKeyData;   // Current data is Cached
              if (objData == null)
              {
                  m_objCurrentPhysicalRecord = NONE;
                  objData = m_tableRemote.seek(strSeekSign, iOpenMode, strKeyArea, strFields, objKeyData);
                  if (objData instanceof Vector)
                      if (m_htCache != null)
                  {
                      m_objCurrentPhysicalRecord = objKeyData;    // Current data is current
                      m_objCurrentCacheRecord = objKeyData;
                      m_htCache.put(objKeyData, objData);
                  }
              }
              return objData;
          } catch (RemoteException ex) {
              throw ex;
          }
      }