code: <T extends JCTree> List<T> translateArgs(List<T> _args,
                                             List<Type> parameters,
                                             Type varargsElement) {
          if (parameters.isEmpty()) return _args;
          List<T> args = _args;
          while (parameters.tail.nonEmpty()) {
              args.head = translate(args.head, parameters.head);
              args = args.tail;
              parameters = parameters.tail;
          }
          Type parameter = parameters.head;
          Assert.check(varargsElement != null || args.length() == 1);
          if (varargsElement != null) {
              while (args.nonEmpty()) {
                  args.head = translate(args.head, varargsElement);
                  args = args.tail;
              }
          } else {
              args.head = translate(args.head, parameter);
          }
          return _args;
      }
docs: Translate method argument list, casting each argument
  to its corresponding type in a list of target types.
  @param _args            The method argument list.
  @param parameters       The list of target types.
  @param varargsElement   The erasure of the varargs element type,
  or null if translating a non-varargs invocation