I think you can get away with just the `dictionary...` method here, especially if you just implement it in the subclasses so can use the strongly typed source/target properties rather than needing to have the extra methods.