case class A(private val foo:String) case class B(protected[this] val foo:String)