Chaining analyses from an analysis group

Hello,

Two questions regarding analysis groups that ``chain'' their results,
like AliasAnalysis.

(1) I have an analysis group, let's call it Provider. I also have two
implementations of it: ProviderA and ProviderB.

The "writing a pass" document suggests using:

  au.addRequiredTransitive< Provider >();

Within the getAnalysisUsage() method of both ProviderA and ProviderB.

But... I'm doing something wrong, and I get an infinite recursion.

(2) ALSO, I'm confused. Should I get the previous results using:

  Provider &previous = getAnalysis< Provider >();

But that returns a reference, so how could the last pass in the chain
call it if it doesn't exist? Or, am I supposed to implement a
terminal pass, similar to NoAA?