Based on D1178
Not much to say here, this is pretty straight forward.
Note that we are “cool” with operations which only affect the first item (intersections and differences), and allow in those cases all other args to be gsets, even if first one is ghash. Reason here is that you may want to 'trim' a ghash based on some gset’s content…