public static UUnary create(Kind unaryOp, UExpression expression) {
    checkArgument(
        UNARY_OP_CODES.containsKey(unaryOp), "%s is not a recognized unary operation", unaryOp);
    return new AutoValue_UUnary(unaryOp, expression);
  }
@Test
  public void equality() {
    ULiteral sevenLit = ULiteral.intLit(7);
    ULiteral threeLit = ULiteral.intLit(3);
    ULiteral falseLit = ULiteral.booleanLit(false);
    new EqualsTester()
        .addEqualityGroup(UUnary.create(Kind.UNARY_MINUS, sevenLit))
        .addEqualityGroup(UUnary.create(Kind.UNARY_MINUS, threeLit))
        .addEqualityGroup(UUnary.create(Kind.BITWISE_COMPLEMENT, sevenLit))
        .addEqualityGroup(UUnary.create(Kind.LOGICAL_COMPLEMENT, falseLit))
        .testEquals();
  }