anchor.diff:  // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
   // for details. All rights reserved. Use of this source code is governed by a
   // BSD-style license that can be found in the LICENSE file.
  -
  -import 'package:meta/meta.dart';
   
   import 'custom_matcher.dart';
   import 'interfaces.dart';
  
positive.code:       .addAll('', ' and ', '', _functionMatchers);
  }
  
  @visibleForTesting
  class FunctionMatcher<T> extends CustomMatcher {
    final Object? Function(T value) _feature;
  
    FunctionMatcher(String name, this._feature, Object? matcher)
        : super('`$name`:', '`$name`', matcher);
  
    @override
  
negative.code: /// by calls to [TypeMatcher.having].
  class HavingMatcher<T> implements TypeMatcher<T> {
    final TypeMatcher<T> _parent;
    final List<_FunctionMatcher<T>> _functionMatchers;
  
    HavingMatcher(this._parent, String description, Object? Function(T) feature,
        dynamic matcher)
        : _functionMatchers = [
            _FunctionMatcher<T>(description, feature, matcher)
          ];
  
    HavingMatcher._fromExisting(
        this._parent,
        String description,
        Object? Function(T) feature,
        dynamic matcher,
        Iterable<_FunctionMatcher<T>>? existing)
        : _functionMatchers = [
            ...?existing,
            _FunctionMatcher<T>(description, feature, matcher)
          ];
  
    @override
    TypeMatcher<T> having(
            Object? Function(T) feature, String description, dynamic matcher) =>
        HavingMatcher._fromExisting(
            _parent, description, feature, matcher, _functionMatchers);
  
    @override
    bool matches(dynamic item, Map matchState) {
  