package inference;

public class Bug16 {

  public interface Interface<K1, V1> {}

  private static class Implementation<K, V> implements Interface<K, V> {
    Implementation(Interface<? extends K, ? extends V> delegate, Interface<V, K> inverse) {}

    Implementation(Interface<V, K> inverse, int o) {}

    Implementation(Interface<? extends K, ? extends V> delegate) {}

    void test(Interface<V, K> param) {
      Interface<V, K> inverse1 = new Implementation<>(param, this);
      Interface<V, K> inverse1b = new Implementation<V, K>(param, this);
      Interface<V, K> inverse2 = new Implementation<>(param);
      Interface<V, K> inverse3 = new Implementation<>(this, 1);
    }
  }
}
