def __gen_annoset_file(self):
        """
        An ``annoSet`` file describes the set of annotations contained in a
        document (i.e. it lists all annotation files that belong to a PAULA
        document). Each PAULA document must contain an annoSet file.

        An ``annoSet`` file can also be used to list the contents of a
        (sub)corpus, but we're not using this feature in discoursegraphs, yet.
        """
        paula_id = '{0}.{1}.anno'.format(self.corpus_name, self.name)
        E, tree = gen_paula_etree(paula_id)

        slist = E('structList', {'type': 'annoSet'})
        # NOTE: we could group all the annotations into different structs
        # but I don't see the point. We're already using namespaces, after all
        struct = E('struct', {'id': 'anno_all_annotations'})
        for i, file_id in enumerate(self.files):
            struct.append(E('rel',
                            {'id': 'rel_{0}'.format(i),
                             XLINKHREF: file_id+'.xml'}))
        slist.append(struct)
        tree.append(slist)
        self.files[paula_id] = tree
        self.file2dtd[paula_id] = PaulaDTDs.struct
        return paula_id