'In general: Produces URLs from our data source, hand them to the
callable consumer.
In specific: Iterate over our list of paths and delegate the actual
processing to helper methods.  This is a complexity no other data source
needs to suffer.  We are unique in that we can have files that tell us
to bring in other files.
Note the decision to allow an index file or not is made in this method.
If we call our parser with (self._contexts == None) the parser will
grab whichever context stack can handle the file.  IE: index is allowed.
If instead we set (self._contexts = ...) before parsing, the parser
will only use the stack we specify.  IE: index not allowed.'

def ProduceURLs(self, consumer):

    self._contexts_idx = [InputSitemap._ContextSitemapIndex(), InputSitemap._ContextSitemap(), InputSitemap._ContextValue()]
    self._contexts_stm = [InputSitemap._ContextUrlSet(), InputSitemap._ContextUrl(consumer), InputSitemap._ContextValue()]
    assert self._pathlist
    path = self._pathlist[0]
    self._contexts = None
    self._ProcessFile(path)
    self._contexts = self._contexts_stm
    for path in self._pathlist[1:]:
        self._ProcessFile(path)
