whole_func_string: function setupTabsController () {
      ctrl.selectedIndex = ctrl.selectedIndex || 0;
      compileTemplate();
      configureWatchers();
      bindEvents();
      $mdTheming($element);
      $mdUtil.nextTick(function () {
        // Note that the element references need to be updated, because certain "browsers"
        // (IE/Edge) lose them and start throwing "Invalid calling object" errors, when we
        // compile the element contents down in `compileElement`.
        elements = getElements();
        updateHeightFromContent();
        adjustOffset();
        updateInkBarStyles();
        ctrl.tabs[ ctrl.selectedIndex ] && ctrl.tabs[ ctrl.selectedIndex ].scope.select();
        loaded = true;
        updatePagination();
      });
    }
func_code_string: function setupTabsController () {
      ctrl.selectedIndex = ctrl.selectedIndex || 0;
      compileTemplate();
      configureWatchers();
      bindEvents();
      $mdTheming($element);
      $mdUtil.nextTick(function () {
        // Note that the element references need to be updated, because certain "browsers"
        // (IE/Edge) lose them and start throwing "Invalid calling object" errors, when we
        // compile the element contents down in `compileElement`.
        elements = getElements();
        updateHeightFromContent();
        adjustOffset();
        updateInkBarStyles();
        ctrl.tabs[ ctrl.selectedIndex ] && ctrl.tabs[ ctrl.selectedIndex ].scope.select();
        loaded = true;
        updatePagination();
      });
    }
func_documentation_string: Perform setup for the controller, setup events and watcher(s)