import org.checkerframework.framework.testchecker.util.*;

public class Equal {

  String f1, f2, f3;

  // annotation inference for equality
  void t1(@Odd String p1, String p2) {
    // :: error: (assignment)
    @Odd String l1 = f1;
    if (f1 == p1) {
      @Odd String l2 = f1;
    } else {
      // :: error: (assignment)
      @Odd String l3 = f1;
    }
  }

  // annotation inference for equality
  void t2(@Odd String p1, String p2) {
    // :: error: (assignment)
    @Odd String l1 = f1;
    if (f1 != p1) {
      // :: error: (assignment)
      @Odd String l2 = f1;
    } else {
      @Odd String l3 = f1;
    }
  }

  void t3(@Odd Long p1) {
    // :: error: (assignment)
    @Odd Long l1 = Long.valueOf(2L);
    if (Long.valueOf(2L) == p1) {
      // The result of valueOf is not deterministic, so it can't be refined.
      // :: error: (assignment)
      @Odd Long l2 = Long.valueOf(2L);
    } else {
      // :: error: (assignment)
      @Odd Long l3 = Long.valueOf(2L);
    }
  }
}
