code: function calendarDirective() {
      return {
        template:
          '<div class="md-calendar-scroll-mask">' +
            '<md-virtual-repeat-container class="md-calendar-scroll-container">' +
              '<table role="grid" tabindex="0" class="md-calendar" aria-readonly="true">' +
                '<tbody ' +
                    'md-calendar-year-body ' +
                    'role="rowgroup" ' +
                    'md-virtual-repeat="i in yearCtrl.items" ' +
                    'md-year-offset="$index" class="md-calendar-year" ' +
                    'md-start-index="yearCtrl.getFocusedYearIndex()" ' +
                    'md-item-size="' + TBODY_HEIGHT + '">' +
                  // The <tr> ensures that the <tbody> will have the proper
                  // height, even though it may be empty.
                  '<tr aria-hidden="true" md-force-height="\'' + TBODY_HEIGHT + 'px\'"></tr>' +
                '</tbody>' +
              '</table>' +
            '</md-virtual-repeat-container>' +
          '</div>',
        require: ['^^mdCalendar', 'mdCalendarYear'],
        controller: CalendarYearCtrl,
        controllerAs: 'yearCtrl',
        bindToController: true,
        link: function(scope, element, attrs, controllers) {
          var calendarCtrl = controllers[0];
          var yearCtrl = controllers[1];
          yearCtrl.initialize(calendarCtrl);
        }
      };
    }
docs: Private component, representing a list of years in the calendar.