docs: def filter_stream(self, stream):
          """
          We convert 
          {{ some.variable | filter1 | filter 2}}
              to 
          {{ some.variable | filter1 | filter 2 | bind}}
          
          ... for all variable declarations in the template
  
          This function is called by jinja2 immediately 
          after the lexing stage, but before the parser is called. 
          """
          while not stream.eos:
              token = next(stream)
              if token.test("variable_begin"):
                  var_expr = []
                  while not token.test("variable_end"):
                      var_expr.append(token)
                      token = next(stream)
                  variable_end = token
  
                  last_token = var_expr[-1]
                  if (not last_token.test("name") 
                      or not last_token.value in ('bind', 'inclause', 'sqlsafe')):
                      param_name = self.extract_param_name(var_expr)
                      # don't bind twice
                      var_expr.append(Token(10, 'pipe', u'|'))
                      var_expr.append(Token(10, 'name', u'bind'))
                      var_expr.append(Token(2, 'lparen', u'('))
                      var_expr.append(Token(10, 'string', param_name))
                      var_expr.append(Token(2, 'rparen', u')'))
  
                  var_expr.append(variable_end)
                  for token in var_expr:
                      yield token
              else:
                  yield token