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> inverse2 = new Implementation<>(param);
      Interface<V, K> inverse3 = new Implementation<>(this, 1);
    }
  }
}
