TR fold<TR>(TR Function(Iterable<Fail> failures) invalid, TR Function(T val) valid) { return isValid ? valid(_value!) : invalid(_failures); }