public boolean nextP() {
    { StellaHashTableIterator self = this;

      { KvCons cursor = self.bucketCursor;

        if (self.firstIterationP) {
          self.firstIterationP = false;
        }
        else if (cursor != null) {
          cursor = cursor.rest;
        }
        if (cursor == null) {
          { KvCons[] table = self.bucketTable;
            int index = self.bucketIndex;
            int size = self.size;

            if (table == null) {
              return (false);
            }
            while ((cursor == null) &&
                (index < size)) {
              cursor = table[index];
              index = index + 1;
            }
            self.bucketIndex = index;
            self.bucketCursor = cursor;
          }
        }
        if (cursor != null) {
          self.key = cursor.key;
          self.value = cursor.value;
          self.bucketCursor = cursor;
          return (true);
        }
        else {
          return (false);
        }
      }
    }
  }