   _get_preserve_newlines:(options = {})=>
     Util.truthy_string(options.preserve_newlines ? options.preserveNewlines ? @preserve_newlines ? false)
 
+  # determines the "trim_trailing_newline" value based on the given options
+  _get_trim_trailing_newline:(options = {})=>
+    Util.truthy_string(options.trim_trailing_newline ? options.trimTrailingNewline ? @trim_trailing_newline ? false)
+
   # determines the "use_cache" value based on the given options
   _get_use_cache:(options = {})=>
     Util.truthy_string(options.use_cache ? options.useCache ? @use_cache ? false)

  #
  #  * `preserve_newlines` - when `true`, all `\n` characters found in templates
  #       will be converted to `{~n}` prior to processing the template.
  #
  #  * `use_cache` - when `true`, "compiled" templates will be cached (by name
  #       or filename); otherwise no caching will be applied, including dust's

  # invokes `template_not_found(template_name,options,original_callback)`
  # otherwise invokes `cb()`
  _maybe_check_that_file_exists:(filename,template_name,options,original_callback,cb)=>
    template_not_found = @_get_template_not_found(options)
    if template_not_found?
      fs.exists filename, (exists)=>
        if exists
