Created by dark on 26/11/14.
Collect all super calls to trait members.
For each super reference to trait member, register a call from the current class to the owner of the referenced member.
This information is used to know if it is safe to remove a redundant mixin class. A redundant mixin class is one that is implemented by another mixin class. As the methods in a redundant mixin class could be implemented with a default abstract method, the redundant mixin class could be required as a parent by the JVM.
Scala primitive operations are represented as methods in
AnyVal subclasses. Here we demultiplex them by providing a mapping
from their symbols to integers. Different methods exist for
different value types, but with the same meaning (like plus, minus,
etc.). They will all be mapped to the same int.
Note: The three equal methods have the following semantics:
"==" checks for
null, and if non-null, calls
(class: Any; modifier: final). Primitive:
"eq" usual reference comparison
(class: AnyRef; modifier: final). Primitive:
"equals" user-defined equality (Java semantics)
(class: Object; modifier: none). Primitive:
Inspired from the