Currently, each set_requirements() method has duplicated code. The reason for not having this method live in the base class of SubroutineModel is that the explicit arguments specified in any child class serve as type hints for those using the method. However, there may be a cleaner way to achieve this result that doesn't require as much code duplication. Investigate this!