def get_source(self, environment, template):
        """.. seealso:: :meth:`jinja2.loaders.FileSystemLoader.get_source`
        """
        pieces = jinja2.loaders.split_template_path(template)
        for searchpath in self.searchpath:
            filename = os.path.join(searchpath, *pieces)
            if self.enable_glob:
                files = sorted(glob.glob(filename))
            else:
                files = [filename]
            contents_mtimes = list(_load_file_itr(files, self.encoding))
            if not contents_mtimes:
                continue

            contents = ''.join(cm[0] for cm in contents_mtimes)
            mtimes = [cm[1] for cm in contents_mtimes]

            def uptodate():
                """function to check of these are up-to-date.
                """
                try:
                    return all(os.path.getmtime(fn) == mt for fn, mt
                               in zip(files, mtimes))
                except OSError:
                    return False

            return contents, filename, uptodate

        raise jinja2.exceptions.TemplateNotFound(template)