// test cases for #2809
// https://github.com/typetools/checker-framework/issues/2809

import org.checkerframework.checker.interning.qual.Interned;
import org.checkerframework.checker.interning.qual.UnknownInterned;

public class Issue2809 {

  void new1(MyType<int @Interned []> t, int @Interned [] non) {
    t.self(new MyType<>(non));
  }

  void new2(MyType<int @Interned []> t, int @Interned [] non) {
    t.self(new MyType<int @Interned []>(non));
  }

  void new3(MyType<@Interned MyType<Object>> t, @Interned MyType<Object> non) {
    t.self(new MyType<>(non));
  }

  void newFail(MyType<int @Interned []> t, int @UnknownInterned [] non) {
    // :: error: (argument)
    t.self(new MyType<>(non));
  }

  class MyType<T> {
    MyType(T p) {}

    void self(MyType<T> myType) {}
  }
}
