     @packageStates[name] = state
 
   getPackageDependencies: ->
-    unless @packageDependencies?
-      try
-        @packageDependencies = require('../package.json')?.packageDependencies
-      @packageDependencies ?= {}
-
     @packageDependencies
 
   hasAtomEngine: (packagePath) ->


  # Public: Returns an {Array} of {String}s of all the available package paths.
  getAvailablePackagePaths: ->
    packagePaths = []

    for packageDirPath in @packageDirPaths
      for packagePath in fs.listSync(packageDirPath)
        packagePaths.push(packagePath) if fs.isDirectorySync(packagePath)

    packagesPath = path.join(@resourcePath, 'node_modules')
    for packageName of @getPackageDependencies()
      packagePath = path.join(packagesPath, packageName)
      packagePaths.push(packagePath) if fs.isDirectorySync(packagePath)

    _.uniq(packagePaths)

  # Public: Returns an {Array} of {String}s of all the available package names.
  getAvailablePackageNames: ->
    _.uniq _.map @getAvailablePackagePaths(), (packagePath) -> path.basename(packagePath)

  # Public: Returns an {Array} of {String}s of all the available package metadata.
  getAvailablePackageMetadata: ->
    packages = []
    for packagePath in @getAvailablePackagePaths()
      name = path.basename(packagePath)
      metadata = @getLoadedPackage(name)?.metadata ? @loadPackageMetadata(packagePath, true)
      packages.push(metadata)
    packages

  ###
  Section: Private
  ###

    # of the first package isn't skewed by being the first to require atom
    require '../exports/atom'

    packages = @getAvailablePackages().filter((p) => not @isPackageDisabled(p.name))
    @config.transact =>
      for pack in packages
        @loadPackage(pack.path)
      return
    @initialPackagesLoaded = true
    @emitter.emit 'did-load-initial-packages'
