package test.p1.p2

abstract class A {
  private[p2] def f2: Unit
  protected def f3: Unit
  private[p1] def f4: Unit
  protected[p1] def f5: Unit
}
  
abstract class OK1 extends A {
  private[p1] def f2: Unit
  protected[p2] def f3: Unit
  private[test] def f4: Unit
  protected[test] def f5: Unit
}
abstract class OK2 extends A {
  protected[p1] def f2: Unit
  def f3: Unit
  protected[p1] def f4: Unit
  def f5: Unit
}
abstract class Err1 extends A {
  private def f2: Unit = ()
  private[p2] def f3: Unit = ()
  private[p2] def f4: Unit
  protected[p2] def f5: Unit
}
