Refactoring of CompileTimeConstant, introduce flag to represent a constant being referenced by a variable
Intention to simplify boolean expressions that have expressions in them that can be simplified to constants
Merge pull request #392 from wutalman/simplify_booleans

KT-4569: Intention to simplify boolean expressions with constants #KT-4569 Fixed
Intention for adding explicit type arguments at function calls
Added ifThenToElvisInspection

Conflicts:
	idea/src/META-INF/plugin.xml
Added ifThenToSafeAccessInspection
Merge pull request #434 from zgrannan/if_then_to_elvis_inspection

KT-4555 Inspection to detect if's that are foldable to elvis operator
Merge remote-tracking branch 'origin/pr/435'

Conflicts:
	idea/src/META-INF/plugin.xml
	idea/tests/org/jetbrains/jet/plugin/codeInsight/JetInspectionTestGenerated.java
Correctly unparse EQEQEQ and EXCLEQEQEQ into === and !== (instead of == and !=).

Reported by Pradyoth Kukkapalli on the kotlin-students mailing list.
Merge pull request #443 from Stebalien/fix-eqeqeq

Accepted, thank you
Warn about unwrapFakeOverride in a comment
Simplify codegen for trait methods with implementations

- use existing framework (FunctionCodegen.generateMethod) which will take care
  of all subtleties of method generation (bridges, annotations, thrown
  exceptions, etc)
- call to "generateThisOrOuter" was not needed, since when we're generating
  delegation to TImpl, "this" is always "ALOAD 0"
Minor, move and rename getExceptions

Should only be used in FunctionCodegen from now on, because every method
generation should go through FunctionCodegen
Refactor bridges algorithm in codegen

- fix a typo (which apparently didn't matter)
- queue now always contains originals, no need to invoke getOriginal()
- no need to add current descriptor's original anymore, this was a hack working
  around a problem with trait-impl which was fixed by another change
- a small optimization: don't do anything for constructors
Generate bridges for fake overrides when needed

 #KT-3985 Fixed
 #KT-4145 Fixed
Consider all real functions, not only declarations in bridge codegen

There should be bridges to all of the functions present in bytecode
Minor, add bytecode text test on bridges for fake overrides
Minor, catch all exceptions in asm verification in tests

E.g. ClassFormatError
Refactor ImplementationBodyCodegen.getTraitImplementations()

Make it static, extract a method which finds an implementation in a trait for a
fake override
Rewrite bridge generation to Kotlin, make it abstract