Currently, there is quite a bit of duplication of code when a subroutine consumes error and allocates to its subroutines. Now that the set_requirements() method has been updated so as to only change the requested requirements, we could, in principle, consume the error for the routine and populate the failure_tolerances of its subroutines in an automated way. This would have the advantage of greatly simplifying the code in each populate_requirements_for_subroutines() method.