The `MandatoryStringSuccess` and `MandatoryStringFailure` classes are  identical except `PASS` and `FAIL`. Perhaps they can be the same class, with `PASS` or `FAIL` passed to them at initialisation?