import org.checkerframework.common.aliasing.qual.*;

public class AliasingConstructorTest {

  public AliasingConstructorTest(@NonLeaked Object o) {}

  // int and String parameters on the constructors below are used only
  // to make a distinction among constructors.
  public AliasingConstructorTest(@LeakedToResult Object o, int i) {}

  public AliasingConstructorTest(Object o, String s) {}

  public void annosInAliasingConstructorTest() {
    @Unique Object o = new Object();
    new AliasingConstructorTest(o);
    Object o2 = new Object();
    new AliasingConstructorTest(o2, 1);
    AliasingConstructorTest ct = new AliasingConstructorTest(o2, 1);
    @Unique Object o3 = new Object();
    // ::error: (unique.leaked)
    new AliasingConstructorTest(o3, "someString");
  }
}
