Added the `meta` module.

--HG--
branch : trunk
diff --git a/CHANGES b/CHANGES
index b218e87..b8450fc 100644
--- a/CHANGES
+++ b/CHANGES
@@ -20,6 +20,7 @@
   *before* the loop.  (#331)
 - Added support for optional `scoped` modifier to blocks.
 - Added support for line-comments.
+- Added the `meta` module.
 
 Version 2.1.1
 -------------
diff --git a/docs/api.rst b/docs/api.rst
index 5383293..5a1e29a 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -665,3 +665,17 @@
     change it in a backwards incompatible way but modifications in the Jinja2
     core may shine through.  For example if Jinja2 introduces a new AST node
     in later versions that may be returned by :meth:`~Environment.parse`.
+
+The Meta API
+------------
+
+.. versionadded:: 2.2
+
+The meta API returns some information about abstract syntax trees that
+could help applications to implement more advanced template concepts.  All
+the functions of the meta API operate on an abstract syntax tree as
+returned by the :meth:`Environment.parse` method.
+
+.. autofunction:: jinja2.meta.find_undeclared_variables
+
+.. autofunction:: jinja2.meta.find_referenced_templates
diff --git a/docs/conf.py b/docs/conf.py
index 3bd30e1..ba90c49 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -95,9 +95,6 @@
 # typographically correct entities.
 #html_use_smartypants = True
 
-# use jinja2 for templates
-template_bridge = 'jinjaext.Jinja2Bridge'
-
 # no modindex
 html_use_modindex = False
 
diff --git a/docs/jinjaext.py b/docs/jinjaext.py
index 212c8bf..66f4ba1 100644
--- a/docs/jinjaext.py
+++ b/docs/jinjaext.py
@@ -77,16 +77,6 @@
     }
 
 
-class Jinja2Bridge(TemplateBridge):
-
-    def init(self, builder):
-        path = builder.config.templates_path
-        self.env = Environment(loader=FileSystemLoader(path))
-
-    def render(self, template, context):
-        return self.env.get_template(template).render(context)
-
-
 _sig_re = re.compile(r'^[a-zA-Z_][a-zA-Z0-9_]*(\(.*?\))')
 
 
diff --git a/jinja2/nodes.py b/jinja2/nodes.py
index c7858b6..7c6c230 100644
--- a/jinja2/nodes.py
+++ b/jinja2/nodes.py
@@ -146,7 +146,9 @@
             return result
 
     def find_all(self, node_type):
-        """Find all the nodes of a given type."""
+        """Find all the nodes of a given type.  If the type is a tuple,
+        the check is performed for any of the tuple items.
+        """
         for child in self.iter_child_nodes():
             if isinstance(child, node_type):
                 yield child