KT-3706 Inconsistent stack height in try catch finally in function
KT-4134 Incorrect bytecode is generated for

 #KT-3706 Fixed
 #KT-4134 Fixed
Do not annotate bare type parameters as @Nullable

This is to account for the case of, say

     class Function<R> { fun invoke(): R }

it would be a shame to put @Nullable on the return type of the function, and force all callers to check for null,
so we put no annotations
Fix built-ins serializer to work with any packages

Make it serialize data for all packages found in sources and not only
KotlinBuiltIns.FQ_NAME, i.e. "jet". This is required to migrate built-ins from
package "jet" to "kotlin"
Extract JetTestUtils.getLastCommentInFile()

JetNameSuggesterTest contains useful code for getting the last comment
of a file. Extract it to JetTestUtils.getLastCommentInFile() so other
tests can use it as well.
Make JetTestUtils.getLastCommentInFile() to allow trailing newline

Many editors add a trailing newline when saving. Allow them in
getLastCommentInFile.
Separate GUI logic from smartSelectExpression

Previously smartSelectExpression did both the determination of suitable
expressions and displaying the GUI. Separate the actual logic into a new
method, getSmartSelectSuggestions so that smart selection can be tested
in the future.
Add test suite for smart expression selector

Add test suite for smart expression selector (the small expression list
popup in e.g. Extract Variable.)

The test file format is similar to that in JetNameSuggesterTest: a .kt
file with the usual <caret> marker specifying the place where the smart
selector will be run. Then, the last comment in the file should contain
the expected outcome.
Fix unnecessary parenthesis around 'this' in refactorings

Operator priority calculation for 'this' expressions was incorrect in
JetPsiUtil.getPriority(): it would return a very low value for
a JetThisExpression, causing the IDE to report that parenthesis
are necessary in an expression like '(this)[1]'.

Fix this by making JetThisExpression not implement
JetStatementExpression by removing the implements clause from
JetLabelQualifiedInstanceExpression and adding it to all other
subclasses of JetLabelQualifiedInstanceExpression.

Fixes KT-4513.
Prevent smartSelectExpression from breaking up 'this@outerClass'

The previous commit made JetThisExpression not implement
JetStatementExpression. This had the side effect that
smartSelectExpression over a label-qualified this expression
(e.g 'this@outerClass') would now also list a plain 'this'
as a potential expression. Restore the old behaviour by adding an
explicit check for JetThisExpression.
New Intention Action: Replace an infix function call with a dot qualified method call.
Allow to find usages of Java class via references to its constructor  #KT-4521 Fixed
Add assertion message
Support find usages for declarations with multiple overridden Java methods (e.g. J -> J -> K)
JS backend: fixed smartcast when a call have implicit this or receiver.
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