code: function bind(property, options, preserveContext, shouldDisplay, valueNormalizer) {
    var data = options.data,
        fn = options.fn,
        inverse = options.inverse,
        view = data.view,
        currentContext = this,
        pathRoot, path, normalized;
  
    normalized = normalizePath(currentContext, property, data);
  
    pathRoot = normalized.root;
    path = normalized.path;
  
    // Set up observers for observable objects
    if ('object' === typeof this) {
      // Create the view that will wrap the output of this template/property
      // and add it to the nearest view's childViews array.
      // See the documentation of Ember._HandlebarsBoundView for more.
      var bindView = view.createChildView(Ember._HandlebarsBoundView, {
        preserveContext: preserveContext,
        shouldDisplayFunc: shouldDisplay,
        valueNormalizerFunc: valueNormalizer,
        displayTemplate: fn,
        inverseTemplate: inverse,
        path: path,
        pathRoot: pathRoot,
        previousContext: currentContext,
        isEscaped: !options.hash.unescaped,
        templateData: options.data
      });
  
      view.appendChild(bindView);
  
      /** @private */
      var observer = function() {
        Ember.run.once(bindView, 'rerenderIfNeeded');
      };
  
      // Observes the given property on the context and
      // tells the Ember._HandlebarsBoundView to re-render. If property
      // is an empty string, we are printing the current context
      // object ({{this}}) so updating it is not our responsibility.
      if (path !== '') {
        Ember.addObserver(pathRoot, path, observer);
      }
    } else {
      // The object is not observable, so just render it out and
      // be done with it.
      data.buffer.push(getPath(pathRoot, path, options));
    }
  }
docs: Binds a property into the DOM. This will create a hook in DOM that the KVO system will look for and update if the property changes. @private