This class adds super accessors for all super calls that either appear in a trait or have as a target a member of some outer class.
It also checks that:
(1) Symbols accessed from super are not abstract, or are overridden by an abstract override.
(2) If a symbol accessed from super is defined in a real class (not a trait), there are no abstract members which override this member in Java's rules (see SI-4989; such an access would lead to illegal bytecode)
(3) Super calls do not go to some synthetic members of Any (see isDisallowed)
(4) Super calls do not go to synthetic field accessors
List buffers for new accessor definitions, indexed by class
Some parts of trees will get a new owner in subsequent phases. These are value class methods, which will become extension methods. (By-name arguments used to be included also, but these don't get a new class anymore, they are just wrapped in a new method).
These regions will have to be treated specially for the purpose of adding accessors. For instance, super calls from these regions always have to go through an accessor.
invalidEnclClass field, if different from NoSymbol,
contains the symbol that is not a valid owner.
Disallow some super.XX calls targeting Any methods which would otherwise lead to either a compiler crash or runtime failure.
A super accessor call corresponding to
Transform select node, adding super and protected accessors as needed
super.f for conforming to rules. If necessary,
replace by a super accessor call.
DefDef producing operation
op, potentially setting