weird analysis group behavior

I have several passes and an analysis group Z. Below I've listed the passes and they're important properties

      Transitively Implements
Pass Requires Requires Preserves Z
---- -------- ------------ --------- ----------
A - - all no
B - A all no
C - A, B all no
D - - all yes
E - - all yes
F Z B, C all no
G B, F - none no

In addition, D is the default implementation of Z. If I want to run the whole chain, using the default implementation of Z, then I just call "opt -G" The -G option causes A, B, C, D (the default implementation of Z), and F to be run because of the dependencies. I would like to be able to specify with the -G option, a specific implementation of Z that I want run. So, I tried calling "opt -E -G" While it does cause E to get run, D also gets run and D is the implementation of Z that F uses. However, if I call "opt -A -E -G" or "opt -B -E -G" or "opt -C -E -G" then E will get run and F will use the E implementation of Z. Can someone explain why I'm getting this behavior and why I can't simply call "opt -E -G"