@Override
  public VType getOrDefault(KType key, VType defaultValue) {
    if (Intrinsics.<KType> isEmpty(key)) {
      return hasEmptyKey ? Intrinsics.<VType> cast(values[mask + 1]) : defaultValue;
    } else {
      final KType[] keys = Intrinsics.<KType[]> cast(this.keys);
      final int mask = this.mask;
      int slot = hashKey(key) & mask;

      KType existing;
      while (!Intrinsics.<KType> isEmpty(existing = keys[slot])) {
        if (Intrinsics.<KType> equals(this, key, existing)) {
          return Intrinsics.<VType> cast(values[slot]);
        }
        slot = (slot + 1) & mask;
      }

      return defaultValue;
    }
  }
@ Override public VType getOrDefault ( KType key , VType defaultValue ) { if ( Intrinsics . < KType > isEmpty ( key ) ) { return hasEmptyKey ? Intrinsics . < VType > cast ( values [ mask + 1 ] ) : defaultValue ; } else { final KType [ ] keys = Intrinsics . < KType [ ] > cast ( this . keys ) ; final int mask = this . mask ; int slot = hashKey ( key ) & mask ; KType existing ; while ( ! Intrinsics . < KType > isEmpty ( existing = keys [ slot ] ) ) { if ( Intrinsics . < KType > equals ( this , key , existing ) ) { return Intrinsics . < VType > cast ( values [ slot ] ) ; } slot = ( slot + 1 ) & mask ; } return defaultValue ; } }
{@inheritDoc}