anchor.diff:      var constructorName = node.constructorName;
       var type = node.staticType;
       for (var constructor in _constructorsWithNonNullableArguments) {
  -      if (DartTypeUtilities.extendsClass(
  -          type, constructor.type, constructor.library)) {
  -        if (constructorName?.name?.name == constructor.name) {
  +      if (constructorName?.name?.name == constructor.name) {
  +        if (DartTypeUtilities.extendsClass(
  +            type, constructor.type, constructor.library)) {
             _checkNullArgForClosure(
                 node.argumentList, constructor.positional, constructor.named);
           }
  
positive.code:   final List<int> positional;
    final List<String> named;
  
    // Lazily instantiated, only when this function is found to be called.
    InterfaceTypeDefinition _typeDefinition;
  
    NonNullableFunction(this.library, this.type, this.name,
        {this.positional = const <int>[], this.named = const <String>[]});
  
    InterfaceTypeDefinition get typeDefinition =>
        _typeDefinition ??= new InterfaceTypeDefinition(type, library);
  }
  
  List<NonNullableFunction> _constructorsWithNonNullableArguments =
      <NonNullableFunction>[
    new NonNullableFunction('dart.async', 'Future', null, positional: [0]),
    new NonNullableFunction('dart.async', 'Future', 'microtask', positional: [0]),
    new NonNullableFunction('dart.async', 'Future', 'sync', positional: [0]),
    new NonNullableFunction('dart.async', 'Timer', null, positional: [1]),
    new NonNullableFunction('dart.async', 'Timer', 'periodic', positional: [1]),
    new NonNullableFunction('dart.core', 'List', 'generate', positional: [1]),
  ];
  
  List<NonNullableFunction> _staticFunctionsWithNonNullableArguments =
      <NonNullableFunction>[
    new NonNullableFunction('dart.async', null, 'scheduleMicrotask',
        positional: [0]),
    new NonNullableFunction('dart.async', 'Future', 'doWhile', positional: [0]),
    new NonNullableFunction('dart.async', 'Future', 'forEach', positional: [1]),
    new NonNullableFunction('dart.async', 'Future', 'wait', named: ['cleanUp']),
    new NonNullableFunction('dart.async', 'Timer', 'run', positional: [0]),
  ];
  
  List<NonNullableFunction> _instanceMethodsWithNonNullableArguments =
      <NonNullableFunction>[
    new NonNullableFunction('dart.async', 'Future', 'then',
        positional: [0], named: ['onError']),
    new NonNullableFunction('dart.async', 'Future', 'complete', positional: [0]),
    new NonNullableFunction('dart.collection', 'Queue', 'removeWhere',
        positional: [0]),
    new NonNullableFunction('dart.collection', 'Queue', 'retainWhere',
        positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'any', positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'every', positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'expand', positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'firstWhere',
        positional: [0], named: ['orElse']),
    new NonNullableFunction('dart.core', 'Iterable', 'forEach', positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'fold', positional: [1]),
    new NonNullableFunction('dart.core', 'Iterable', 'lastWhere',
        positional: [0], named: ['orElse']),
    new NonNullableFunction('dart.core', 'Iterable', 'map', positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'reduce', positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'singleWhere',
        positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'skipWhile',
        positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'takeWhile',
        positional: [0]),
    new NonNullableFunction('dart.core', 'Iterable', 'where', positional: [0]),
    new NonNullableFunction('dart.core', 'List', 'removeWhere', positional: [0]),
    new NonNullableFunction('dart.core', 'List', 'retainWhere', positional: [0]),
    new NonNullableFunction('dart.core', 'Map', 'forEach', positional: [0]),
    new NonNullableFunction('dart.core', 'Map', 'putIfAbsent', positional: [1]),
    new NonNullableFunction('dart.core', 'Set', 'removeWhere', positional: [0]),
    new NonNullableFunction('dart.core', 'Set', 'retainWhere', positional: [0]),
    new NonNullableFunction('dart.core', 'String', 'replaceAllMapped',
        positional: [1]),
    new NonNullableFunction('dart.core', 'String', 'replaceFirstMapped',
        positional: [1]),
    new NonNullableFunction('dart.core', 'String', 'splitMapJoin',
        named: ['onMatch', 'onNonMatch']),
  ];
  
  class NullClosures extends LintRule implements NodeLintRule {
    NullClosures()
  
negative.code: import 'package:analyzer/dart/ast/visitor.dart';
  import 'package:analyzer/dart/element/type.dart';
  import 'package:analyzer/dart/element/element.dart';
  import 'package:analyzer/src/generated/utilities_general.dart';
  import 'package:linter/src/analyzer.dart';
  import 'package:linter/src/util/dart_type_utilities.dart';
  
  