I'm not sure of a particularly great way when I only have the type to give me a new version of the subclass?

Use case is that when I walk the producer graph I end up with Node's which are arranged source -> sink, but since we look at our graphs normally DAG'd sink to source it makes sense to reverse them. But at that time we need some function in the subclass to do the reverse?