docs: private long getIndex(int key, boolean inserting)
      {
          long extraInfo = EXTRA_INDEX_INFO;
          //D1 
          final int hash = h(key) & INT_MASK;
          int i = hash % keys.length;
          
          //D2
          int satus_i = status[i];
          if((keys[i] == key && satus_i != DELETED) || satus_i == EMPTY)
              return extraInfo | i;
          if(extraInfo == EXTRA_INDEX_INFO && satus_i == DELETED)
              extraInfo = ((long)i) << 32;
          
          //D3
          final int c = 1 + (hash % (keys.length -2));
          
          while(true)//this loop will terminate
          {
              //D4
              i -= c;
              if(i < 0)
                  i += keys.length;
              //D5
              satus_i = status[i];
              if( (keys[i] == key && satus_i != DELETED) || satus_i == EMPTY || (satus_i == DELETED && inserting))
                  return extraInfo | i;
              if(extraInfo == EXTRA_INDEX_INFO && satus_i == DELETED)
                  extraInfo = ((long)i) << 32;
          }
      }