public void removeAt(Stella_Object key) {
    { KeyValueMap self = this;

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

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

            if (self.equalTestP) {
              loop000 : while (cursor != null) {
                if (Stella_Object.equalP(cursor.key, key)) {
                  break loop000;
                }
                trailer = cursor;
                cursor = cursor.rest;
              }
            }
            else {
              loop001 : while (cursor != null) {
                if (Stella_Object.eqlP(cursor.key, key)) {
                  break loop001;
                }
                trailer = cursor;
                cursor = cursor.rest;
              }
            }
            if (cursor == null) {
              return;
            }
            else if (cursor == trailer) {
              self.theMap = cursor.rest;
            }
            else {
              trailer.rest = cursor.rest;
            }
            self.crossoverPoint = crossover + 1;
          }
        }
      }
    }
  }