The following situation works fine:
 
GenericFrameworkSuperProcedure.p:
 procedure attachDataSources :
   define input-output parameter dataset-handle iophDataset.
   ...
 end procedure.
 
SomeNonGenericProcedure.p:
 procedure attachDataSources :
   define input-output parameter dataset for myDataset.
   ...
 end procedure.

Now I can run "attachDataSources" from the super procedure like this:
 
 run attachDataSources in target-procedure (input-output dataset-handle iophDataset by-reference).
 
...and the implementation in "SomeNonGenericProcedure.p" is run correctly and I can access the dataset buffers in a static way (which is of course prefered to the dynamic access).
 
So in a super procedure stack "dataset" and "dataset-handle" are interchangeable.
But in a class hierarchy the compiler does not allow something similar:
 
GenericFrameworkClass.cls:
 method protected void AttachDataSources (input-output dataset-handle ghDataset):
 ...
 
SomeNonGenericInheritingClass.cls:
 method override protected void AttachDataSources (input-output dataset myDataset):
 ...
 
I get compile error 12956:
Parameter 1 type mismatch for overriding method AttachDataSources. (12956)
 
That seems quite inconsequent to me.