Merging Global/Region Request classes using a witness/phantom type and functional dependencies