Factory method introduced for TopDownAnalysisParameters
Only create lazy annotations for descriptors from code
LAZY flag is moved to TopDownAnalysisParameters
Special factory method for local analysis

- No need to pass the same flags all the time
- No need to check for local mode when in LAZY mode
LazyTopDownAnalyzer extracted as a separate component
Make lazy analysis accessible to clients
Use lazy analysis for highlighting and other purposes
Minor. Unused constant removed
Function object replaced by a normal function
Function object replaced by a normal function

+ unneededly public member made protected
Blinking class object tests fixed

Now lazy descriptors for all class objects are retained by the owning class
USELESS_HIDDEN_IMPORT diagnostic fixed for LAZY mode
Duplicating diagnostics removed from test data
Debugger behavior fixed: backend relies on all relevant files being analyzed, not only one
Unused parameter removed
Minor. Methods made static
Excluding top-level members of library source files when analyzing them lazily
Minor. Unused methods removed
Order the computations in LazyTopDownAnalyzer

- First, all class descriptors are created
- Then, all functions and properties
- Then the rest
Prohibit inheritance loops through containing classes

Example

class A : B {
  trait C
}

class B : A.C

Here we have a loop in the hierarchy: A -> B -> A.C => A

"=>" represents class nesting