Invalidate per-file cache on exceptions
Shorten references: Do not lookup packages when searching for conflicting declarations

Minor: use JetTreeVisitor
Minor: JavaCopyPastePostProcessor -> ConvertJavaCopyPastePostProcessor for clarity
Copy paste: annotations for IDEA classes and corresponding changes in ConvertJavaCopyPastePostProcessor
Kotlin code style: keywords on new line
Fix JetSimpleNameExpression#getReceiver

Correct behaviour for unary, binary expressions and type references
Add instanceof checks in TipsManager so it's clear it only takes care of certain types of JetSimpleNameExpression
Refactor: move utilities to a separate file
Refactor: introduce JetReference, rename: JetPsiReference -> AbstractJetReference

Add resolveToDescriptors() to JetReference trait
Rewrite JetPsiReference to kotlin
Refactor: unite two hierarchies or reference, use common code across all references

Jet*Reference#getTargetDescriptors() no longer returns nullable value (convention is dropped)
Use ResolvedCall#getCandidateDescriptor() instead of ResolvedCall#getResultingDescriptor() because unsubstituted descriptors are expected
Add JetReference#resolveMap() function
Refactor: rewrite JetReferenceContributor to kotlin

Add additional utilities to track what psi elements are capable of holding references
Insert imports on copy/paste

Introduce KotlinCopyPasteReferenceProcessor
Imports on copy/paste: Check whether import is needed before showing the user

Minor: rename ImportInsertHelper.doNeedImport -> needImport
Imports on copy/paste UI: do not show misleading icon in dialog
Implement navigation to references from Call Hierarchy view
 #KT-4518 Fixed
Tests: add complex tests for references to libraries

These tests check that that complex references (var p by delegate, for in collection, array[index]) are resolved correctly when target descriptors have type parameters
See 41f9dcba911959ddd8220309ea89173f04222c18

 #KT-4505 Fixed
ExternalAnnotationResolver is enough to look for external annotations
OBJECT_FQ_NAME moved to DescriptorResolverUtils
resolveCompileTimeConstantValue() rewritten to Kotlin
getKotlinBuiltinClassDescriptor() moved to DescriptorResolverUtils
AnnotationLoadingUtil created. Relevant code/constants moved there