anchor.diff:          param.type.getDisplayString(withNullability: false),
           defaultValue: param.defaultValueCode);
     }
  +
  +  ArgumentList? _findArgumentList() {
  +    var node = _node;
  +    while (node != null && node is! ArgumentList) {
  +      // Certain nodes don't make sense to search above for an argument list
  +      // (for example when inside a function expression).
  +      if (node is FunctionExpression) {
  +        return null;
  +      }
  +      node = node.parent;
  +    }
  +    return node as ArgumentList?;
  +  }
   }
  
positive.code: 
    bool get offsetIsValid => _node != null;
  
    /// Returns the computed signature information, maybe `null`.
    AnalysisGetSignatureResult compute() {
      if (_node == null) {
        return null;
      }
  
      // Find the closest argument list.
      var argsNode = _node;
      while (argsNode != null && !(argsNode is ArgumentList)) {
        // Certain nodes don't make sense to search above for an argument list
        // (for example when inside a function epxression).
        if (argsNode is FunctionExpression) {
          return null;
        }
        argsNode = argsNode.parent;
      }
  
      if (argsNode == null) {
        return null;
      }
  
      final args = argsNode;
      String name;
      ExecutableElement execElement;
      final parent = args.parent;
      if (parent is MethodInvocation) {
        name = parent.methodName.name;
        var element = ElementLocator.locate(parent);
        execElement = element is ExecutableElement ? element : null;
      } else if (parent is InstanceCreationExpression) {
        name = parent.constructorName.type.name.name;
        if (parent.constructorName.name != null) {
          name += '.${parent.constructorName.name.name}';
        }
        execElement = ElementLocator.locate(parent) as ExecutableElement;
      }
  
      if (execElement == null) {
        return null;
      }
  
      _argumentList = args;
  
      final parameters =
          execElement.parameters.map((p) => _convertParam(p)).toList();
  
negative.code: /// [CompilationUnit].
  class DartUnitSignatureComputer {
    final DartdocDirectiveInfo _dartdocInfo;
    final AstNode? _node;
    late ArgumentList _argumentList;
    DartUnitSignatureComputer(
        this._dartdocInfo, CompilationUnit _unit, int _offset)
        : _node = NodeLocator(_offset).searchWithin(_unit);
  