anchor.diff:   * An immutable set of base types, like [: {int, bool} :] or the unknown
    * concrete type.
    */
  -abstract class ConcreteType extends Hashable {
  +abstract class ConcreteType {
     factory ConcreteType.empty() => new UnionType(new Set<BaseType>());
   
     /**
  
positive.code:  * A method-local immutable mapping from variables to their inferred
   * [ConcreteTypes]. Each visitor owns one.
   */
  class ConcreteTypesEnvironment implements Hashable {
    final Map<Element, ConcreteType> environment;
    final BaseType typeOfThis;
    ConcreteTypesEnvironment([this.typeOfThis]) :
  
negative.code:  *   - the null base type
   *   - the unknown base type
   */
  abstract class BaseType {
    bool isUnknown();
    bool isNull();
  }
  