Multiple methods for initializing analysis values
Introduces a number of methods that are called when initializing or updating abstract values in an analyzer frame.
Before this commit, Analyzer.analyze and Frame.execute would always call Interpreter.newValue for initializing or updating frame values.
Having multiple methods allows users to return more precise values
for the individual cases. For example, in a nullness analysis, the
initial value for the this
parameter of an instance method can be
set to not-null.