def call(self, folders, additional_fields, shape):
        """
        Takes a folder ID and returns the full information for that folder.

        :param folders: a list of Folder objects
        :param additional_fields: the extra fields that should be returned with the folder, as FieldPath objects
        :param shape: The set of attributes to return
        :return: XML elements for the folders, in stable order
        """
        # We can't easily find the correct folder class from the returned XML. Instead, return objects with the same
        # class as the folder instance it was requested with.
        from .folders import Folder, DistinguishedFolderId, RootOfHierarchy
        folders_list = list(folders)  # Convert to a list, in case 'folders' is a generator
        for folder, elem in zip(folders_list, self._get_elements(payload=self.get_payload(
            folders=folders,
            additional_fields=additional_fields,
            shape=shape,
        ))):
            if isinstance(elem, Exception):
                yield elem
                continue
            if isinstance(folder, RootOfHierarchy):
                f = folder.from_xml(elem=elem, account=self.account)
            elif isinstance(folder, Folder):
                f = folder.from_xml(elem=elem, root=folder.root)
            elif isinstance(folder, DistinguishedFolderId):
                # We don't know the root, so assume account.root.
                for folder_cls in self.account.root.WELLKNOWN_FOLDERS:
                    if folder_cls.DISTINGUISHED_FOLDER_ID == folder.id:
                        break
                else:
                    raise ValueError('Unknown distinguished folder ID: %s', folder.id)
                f = folder_cls.from_xml(elem=elem, root=self.account.root)
            else:
                # 'folder' is a generic FolderId instance. We don't know the root so assume account.root.
                f = Folder.from_xml(elem=elem, root=self.account.root)
            if isinstance(folder, DistinguishedFolderId):
                f.is_distinguished = True
            elif isinstance(folder, Folder) and folder.is_distinguished:
                f.is_distinguished = True
            yield f
Takes a folder ID and returns the full information for that folder.

        :param folders: a list of Folder objects
        :param additional_fields: the extra fields that should be returned with the folder, as FieldPath objects
        :param shape: The set of attributes to return
        :return: XML elements for the folders, in stable order