class LongHashIndex {

  public void put( long key, Long value ) throws KettleValueException {
    int hashCode = generateHashCode( key );
    int indexPointer = indexFor( hashCode, index.length );

    LongHashIndexEntry check = index[indexPointer];
    LongHashIndexEntry previousCheck = null;

    while ( check != null ) {

      // If there is an identical entry in there, we replace the entry
      // And then we just return...
      //
      if ( check.hashCode == hashCode && check.equalsKey( key ) ) {
        check.value = value;
        return;
      }
      previousCheck = check;
      check = check.nextEntry;
    }

    // Don't forget to link to the previous check entry if there was any...
    //
    if ( previousCheck != null ) {
      previousCheck.nextEntry = new LongHashIndexEntry( hashCode, key, value, null );
    } else {
      index[indexPointer] = new LongHashIndexEntry( hashCode, key, value, null );
    }

    // If required, resize the table...
    //
    resize();
  }

  public  LongHashIndex( int size );
  public  LongHashIndex();

}