anchor.diff:        return type.map(
           user: (type) {
             final matches = getMatchesForType(type)
  -              .map((m) => hir.IdentifierExpression(getId(expression), m));
  +              .map((m) => hir.IdentifierExpression(getId(expression), m))
  +              .toList();
  +          stderr.writeln('matches = $matches');
             if (matches.isEmpty) {
               final receiverId =
                   moduleIdToDeclarationId(queryContext, type.virtualModuleId);
  
positive.code:       ]);
      }
  
      final typeParameters = functionHir.typeParameters
          .map((p) => hir.CandyType.parameter(p.name, functionId))
          .toList();
  
negative.code:     List<hir.PropertyIdentifier> getMatchesForType(hir.UserCandyType type) {
        final receiverId =
            moduleIdToDeclarationId(queryContext, type.virtualModuleId);
        final typeParameters = () {
          if (receiverId.isClass) {
            return getClassDeclarationHir(queryContext, receiverId)
                .typeParameters;
          } else if (receiverId.isTrait) {
            return getTraitDeclarationHir(queryContext, receiverId)
                .typeParameters;
          }
        }()
            .map((it) => hir.CandyType.parameter(it.name, receiverId))
            .toList();
        final typeArguments = type.arguments;
        final genericsMap = Map.fromEntries(typeParameters
            .zip<hir.CandyType, MapEntry<hir.CandyType, hir.CandyType>>(
                typeArguments, (a, b) => MapEntry(a, b)));
        stderr.writeln('genericsMap = $genericsMap');
  
        return getInnerDeclarationIds(queryContext, receiverId)
            .where((id) => id.simplePath.last.nameOrNull == name)
            .mapNotNull((id) {
  