@jolly sluice, when you have this:
<function1> | <function2> TAB
complete sees the type (ModType) returned by function1, but if you add -:
<function1> | <function2> -TAB
Now the context is function2 (ModFunc) so we can complete the available options.
I haven't dug deep into the inner workings here. Is there a reason for not getting the options after just a space?