Валидейтед - более широкое более и оно покрывает то, что не покрывается напрямую рефайндом. Но, кстати, может быть покрыто рефайндом сбоку. Что-то вроде (но это не совсем точно, надо убедиться, что перекрытия типов нет - в любом случае это выполнимо. И на тегах тоже):
`
object Validated extends NewType0 {
type Type[Predicat,T] = Newtype[T], Ops[Predicat,T]]
def apply(v:T)(implicit C:CheckPredicat[Predicat,T]):Either, Option, XYZ =
}
type Validated[P,T] = Validated.Type[P,T]
`