public static <K> @NotNull HashingStrategy<K> adaptKeyDescriptorToStrategy(@NotNull KeyDescriptor<? super K> keyDescriptor) {
    return new HashingStrategy<K>() {
      @Override
      public int hashCode(@Nullable K o) {
        if (o == null) return 0;
        return keyDescriptor.getHashCode(o);
      }

      @Override
      public boolean equals(@Nullable K a, @Nullable K b) {
        if (a == null && b != null) return false;
        if (b == null && a != null) return false;
        return keyDescriptor.isEqual(a, b);
      }
    };
  }
public static <K> @NotNull HashingStrategy<K> adaptKeyDescriptorToStrategy(@NotNull KeyDescriptor<? super K> keyDescriptor)