public static UMethodInvocation create(
      List<? extends UExpression> typeArguments,
      UExpression methodSelect,
      List<UExpression> arguments) {
    return new AutoValue_UMethodInvocation(
        ImmutableList.copyOf(typeArguments), methodSelect, ImmutableList.copyOf(arguments));
  }
@Test
  public void match() {
    UExpression fooIdent = mock(UExpression.class);
    when(fooIdent.unify(ident("foo"), isA(Unifier.class))).thenReturn(Choice.of(unifier));
    ULiteral oneLit = ULiteral.intLit(1);
    ULiteral barLit = ULiteral.stringLit("bar");
    UMethodInvocation invocation =
        UMethodInvocation.create(
            ImmutableList.of(), fooIdent, ImmutableList.<UExpression>of(oneLit, barLit));
    assertUnifies("foo(1, \"bar\")", invocation);
  }