         if argument._keypath
           [_, argument.context] = @renderContext.findKey argument._keypath
         argument
-  
-  # Turn a piece of a `data` keypath into a usable javascript object. 
+
+  # Turn a piece of a `data` keypath into a usable javascript object.
   #  + replacing keypaths using the above regular expression
   #  + wrapping the `,` delimited list in square brackets
   #  + and `JSON.parse`ing them as an array.

# Models
# ------


class Batman.Model extends Batman.Object

  # ## Model API

    \s*               # Be insensitive to whitespace between the comma and the actual arguments.
    (?!               # Use a lookahead to ensure we aren't matching true or false:
      (?:true|false)  # Match either true or false ...
      \s*             # and make sure that there's nothing else that comes after the true or false ...
      (?:$|,)         # before the end of this argument in the list.
    )
    ([a-zA-Z][\w\.]*) # Now that true and false can't be matched, match a dot delimited list of keys.
    \s*               # Be insensitive to whitespace before the next comma or end of the filter arguments list.
    (?:$|,)           # Match either the next comma or the end of the filter arguments list.
    ///

  # The `binding` which calculates the final result by reducing the initial value through all the filters.
  @accessor 'binding'
    get: ->
      @filterFunctions.reduce (value, fn, i) =>
        # Get any argument keypaths from the context stored at parse time.
        args = @filterArguments[i].map (argument) ->
