     pack.deactivate()
     delete @activePackages[pack.name]
 
-  # Public: Get an array of all the active packages
+  # Essential: Get an {Array} of all the active {Package}s.
   getActivePackages: ->
     _.values(@activePackages)
 
-  # Public: Get the active package with the given name
+  # Essential: Get the active {Package} with the given name.
+  #
+  # * `name` - The {String} package name.
+  #
+  # Returns a {Package} or undefined.
   getActivePackage: (name) ->
     @activePackages[name]
 
-  # Public: Is the package with the given name active?
+  # Public: Is the {Package} with the given name active?
+  #
+  # * `name` - The {String} package name.
+  #
+  # Returns a {Boolean}.
   isPackageActive: (name) ->
     @getActivePackage(name)?
 


    _.uniq(packagePaths)

  # Public: Get an array of all the available package names.
  getAvailablePackageNames: ->
    _.uniq _.map @getAvailablePackagePaths(), (packagePath) -> path.basename(packagePath)

  # Public: Get an array of all the available package metadata.
  getAvailablePackageMetadata: ->
    packages = []
    for packagePath in @getAvailablePackagePaths()

    @packageActivators = []
    @registerPackageActivator(this, ['atom', 'textmate'])

  # Extended: Get the path to the apm command.
  #
  # Return a {String} file path to apm.
  getApmPath: ->
    commandName = 'apm'
    commandName += '.cmd' if process.platform is 'win32'
    @apmPath ?= path.resolve(__dirname, '..', 'apm', 'node_modules', 'atom-package-manager', 'bin', commandName)

  # Extended: Get the paths being used to look for packages.
  #
  # Returns an {Array} of {String} directory paths.
  getPackageDirPaths: ->
    _.clone(@packageDirPaths)

