public Stella_Object lookup(Stella_Object key) {
    { KeyValueMap self = this;

      { Stella_Object map = self.theMap;
        int crossover = self.crossoverPoint;

        if (crossover == 0) {
          return (StellaHashTable.stellaHashTableLookup(((StellaHashTable)(map)), key));
        }
        else {
          { KvCons cursor = ((KvCons)(map));

            if (self.equalTestP) {
              while (cursor != null) {
                if (Stella_Object.equalP(cursor.key, key)) {
                  return (cursor.value);
                }
                cursor = cursor.rest;
              }
            }
            else {
              while (cursor != null) {
                if (Stella_Object.eqlP(cursor.key, key)) {
                  return (cursor.value);
                }
                cursor = cursor.rest;
              }
            }
            return (null);
          }
        }
      }
    }
  }