Refactor JDR: minor, extract class
Minor: use orEmpty() instead of ?: listOf() in LazyJavaPackageFragmentProvider
Refactor JDR: create LazyJavaPackageFragmentProvider in injector
Refactor JDR: use JavaResolverCache in LazyJavaPackageFragmentProvider directly

Remove LazyJavaClassResolverWithCache
This actually can affect behaviour because JavaResolverCache has slightly different logic (uses CLASS key in BindingContext as opposed to FQNAME_TO_CLASS_DESCRIPTOR)
Refactor JDR: minor extract function in LazyJavaPackageFragmentProvider
Refactor JDR: remove some of the usages of JavaDescriptorResolver class
Refactor JDR: add explicit binding between java classes and packages for their statics

Get rid of Kind in JavaPackageFragmentDescriptor and create subclass which exposes additional function
Add method in JavaClassDescriptor to get correponding package fragment
Remove JavaDescriptorResolver from context
Remove PackageFragmentDescriptor#getProvider method

PackageFragmentProvider should be hidden from the client of PackageFramentDescriptor
Add validation for binding between java classes and corresponding package fragments
AbstractInsertImportOnPasteTest: use test framework to create correct file structure for java files
JDR: do not create package fragment for class statics if class cannot be resolved

This keeps behaviour consistent in rare cases when JavaClass can be found but not resolved
As of now this can happen in IDE if we take PsiClass from index but file structure is wrong so we can't resolve the class
Add test which documents this case