Refactored: Now that the 'Dao.Predicate.PValue' type has been improved, it no longer mandates a 'Dao.String.UStr' message, so I have removed that field from the 'Dao.Predicate.PFail' constructor. Now for several applications in the "Dao.Evaluator" module that made use of the 'Dao.Predicate.PValue' I am free to choose whether or not I should use 'Dao.Object.Object' or 'Dao.String.UStr' as the error type. Most places I was using 'Dao.String.UStr' anyway, and the required message field was redundant. Now this is no longer the case, so the code is much cleaner.  However I did this refactoring in a hurry, so I may need to go back and replace the failure types for some of the functions with 'Dao.Object.Object's instead. This is noted in the TODO list.