Depending on the resolution of DM-16503, the MetricTask API may need to change (e.g., getInputDatasetTypes -> getInputDatasetTypesGen2). However, at the time this issue is completed, there should be few enough MetricTask subclasses that the extra work is manageable.
I realized later that there's a simpler, and much more robust way to structure the code that eliminates the need for an everything-at-once conversion – have two MetricTask interfaces, one that's always Gen 2 and one that's always Gen 3. I've edited DMTN-098 accordingly.
(Naturally, only the Gen 2 interface will be implemented now)