anchor.diff:      return promotedType ?? variable.type;
     }
   }
  -
  -class _TypeSystemTypeOperations
  -    implements TypeOperations<VariableElement, DartType> {
  -  final TypeSystem typeSystem;
  -
  -  _TypeSystemTypeOperations(this.typeSystem);
  -
  -  @override
  -  bool isLocalVariable(VariableElement element) {
  -    return element is LocalVariableElement;
  -  }
  -
  -  @override
  -  bool isSameType(covariant TypeImpl type1, covariant TypeImpl type2) {
  -    return type1 == type2;
  -  }
  -
  -  @override
  -  bool isSubtypeOf(DartType leftType, DartType rightType) {
  -    return typeSystem.isSubtypeOf(leftType, rightType);
  -  }
  -
  -  @override
  -  DartType promoteToNonNull(DartType type) {
  -    return typeSystem.promoteToNonNull(type);
  -  }
  -
  -  @override
  -  DartType variableType(VariableElement variable) {
  -    return variable.type;
  -  }
  -}
  
positive.code:   final List<AstNode> unassignedNodes = [];
  }
  
  /// The visitor that gathers local variables that are potentially assigned
  /// in corresponding statements, such as loops, `switch` and `try`.
  class _AssignedVariablesVisitor extends RecursiveAstVisitor<void> {
  
negative.code:   final NodeOperations<Expression> _nodeOperations;
  
    /// The reused instance for creating new [FlowAnalysis] instances.
    final TypeSystemTypeOperations _typeOperations;
  
    /// Precomputed sets of potentially assigned variables.
    final AssignedVariables<AstNode, VariableElement> assignedVariables;
  