=str #16479 Make constructor of FreeDirective internal

`sealed abstract trait`? that is no different from `sealed trait` afaik. a trait is abstract by definition

you cannot `new TerminationDirective`, you must do `new TerminationDirective {}`

none of these can be instantiated or subclassed outside of this file (except from java code)

can we do better? do I misunderstand?