docs: function orderControllers () {
      // iterate over all paths
      _.each(this.paths, path => {
          // iterate over methods
          _.each(path, (controllers, method) => {
              // if there is only one controller then nothing to sort
              if (controllers.length === 1) {
                  return
              }
              // psuedo controllers that will be added to end of list
              var all, anonymous, authenticated
              // ordered list of controllers
              var orderedControllers = []
              // add controllers in order skipping psuedo roles
              _.each(controllers, controller => {
                  if (controller.role === 'all') {
                      all = controller
                  }
                  else if (controller.role === 'anonymous') {
                      anonymous = controller
                  }
                  else if (controller.role === 'authenticated') {
                      authenticated = controller
                  }
                  else {
                      orderedControllers.push(controller)
                  }
              })
              // add psuedo controllers in order they should be used
              if (authenticated) {
                  orderedControllers.push(authenticated)
              }
              if (anonymous) {
                  orderedControllers.push(anonymous)
              }
              if (all) {
                  orderedControllers.push(all)
              }
              // replace original list with ordered list
              path[method] = orderedControllers
          })
      })
  }