docs: function eachHelper(path, options) {
        var ctx;
        var helperName = 'each';
  
        if (arguments.length === 4) {
          Ember.assert("If you pass more than one argument to the each helper, it must be in the form #each foo in bar", arguments[1] === "in");
  
          var keywordName = arguments[0];
  
  
          options = arguments[3];
          path = arguments[2];
  
          helperName += ' ' + keywordName + ' in ' + path;
  
          if (path === '') { path = "this"; }
  
          options.hash.keyword = keywordName;
  
        } else if (arguments.length === 1) {
          options = path;
          path = 'this';
        } else {
          helperName += ' ' + path;
        }
  
        options.hash.dataSourceBinding = path;
        // Set up emptyView as a metamorph with no tag
        //options.hash.emptyViewClass = Ember._MetamorphView;
  
        // can't rely on this default behavior when use strict
        ctx = this || window;
  
        options.helperName = options.helperName || helperName;
  
        if (options.data.insideGroup && !options.hash.groupedRows && !options.hash.itemViewClass) {
          new GroupedEach(ctx, path, options).render();
        } else {
          return helpers.collection.call(ctx, EmberHandlebars.EachView, options);
        }
      }