 #   @param [Any] default_value the default value. Can be a value, string or ko.observable
 #   @return [ko.observable] the constructor does not return 'this' but a ko.observable
 #
-# @method .formattedObservable(format, arg1, arg2, ...)
+# @method .formattedObservable(format, arg1, arg2, etc)
 #   Factory to create a new kb.FormattedObservable. See {kb.FormattedObservable#constructor} for information on options. If you are using knockback-core or knockback-core-stack, you can include this from the lib/knockback-formatting component.
 #   @param [String|ko.observable] format the format string. Format: `"{0} and {1}"` where `{0}` and `{1}` would be synchronized with the arguments (eg. "Bob and Carol" where `{0}` is Bob and `{1}` is Carol)
 #   @param [Array] args arguments to be passed to the kb.LocaleManager's get() method

  #   kb.releaseOnNodeRemove(view_model, el);
  #   ...
  #   ko.removeNode(el); // removes el from the DOM and calls kb.release(view_model)
  @releaseOnNodeRemove = (view_model, node) ->
    view_model or _throwUnexpected(@, 'missing view model')
    node or _throwUnexpected(@, 'missing node')
    ko.utils.domNodeDisposal.addDisposeCallback(node, -> kb.release(view_model))

  #   var el = kb.renderTemplate('my_template', kb.viewModel(new Backbone.Model({name: 'Bob'})));
  #   ...
  #   ko.removeNode(el); // removes el from the DOM and calls kb.release(view_model)
  @renderTemplate: (template, view_model, options={}) ->
    return console?.log 'renderTemplate: document is undefined' unless document?

    el = document.createElement('div')
