Have you considered having

val label: Option[Int] = None ?

then isLabeled is simply label.isDefined, and you have one less field.