code: void expectArgumentMatchesParameter(
        Node n, JSType argType, JSType paramType, Node callNode, int ordinal) {
      if (!argType.isSubtypeOf(paramType)) {
        mismatch(
            n,
            SimpleFormat.format(
                "actual parameter %d of %s does not match formal parameter",
                ordinal, typeRegistry.getReadableTypeNameNoDeref(callNode.getFirstChild())),
            argType,
            paramType);
      } else if (!argType.isSubtypeWithoutStructuralTyping(paramType)){
        TypeMismatch.recordImplicitInterfaceUses(this.implicitInterfaceUses, n, argType, paramType);
        TypeMismatch.recordImplicitUseOfNativeObject(this.mismatches, n, argType, paramType);
      }
    }
docs: Expect that the type of an argument matches the type of the parameter that it's fulfilling.
  
  @param t The node traversal.
  @param n The node to issue warnings on.
  @param argType The type of the argument.
  @param paramType The type of the parameter.
  @param callNode The call node, to help with the warning message.
  @param ordinal The argument ordinal, to help with the warning message.