public static UMemberSelect create(UExpression expression, CharSequence identifier, UType type) {
    return new AutoValue_UMemberSelect(expression, StringName.of(identifier), type);
  }
@Test
  public void equality() {
    UType stringTy = UClassType.create("java.lang.String");

    // int String.indexOf(int)
    UMethodType indexOfIntTy = UMethodType.create(UPrimitiveType.INT, UPrimitiveType.INT);
    // int String.indexOf(String)
    UMethodType indexOfStringTy = UMethodType.create(UPrimitiveType.INT, stringTy);

    UExpression fooLit = ULiteral.stringLit("foo");
    UExpression barLit = ULiteral.stringLit("bar");

    new EqualsTester()
        .addEqualityGroup(UMemberSelect.create(fooLit, "indexOf", indexOfIntTy))
        .addEqualityGroup(UMemberSelect.create(fooLit, "indexOf", indexOfStringTy))
        .addEqualityGroup(UMemberSelect.create(barLit, "indexOf", indexOfIntTy))
        .testEquals();
  }