docs: function(buildConfig) {
    if (hasteInstance) {
      return hasteInstance;
    }
    var loaders = buildConfig.useBrowserBuiltins ?
      [new BrowserShimLoader(buildConfig)] : [];
    loaders = loaders.concat([
      new hasteLoaders.JSLoader({       // JS files
        extractSpecialRequires: true    // support for requireLazy, requireDynamic
      }),
      new hasteLoaders.ImageLoader({}), // Images too.
      new hasteLoaders.CSSLoader({}),   // CSS files
      new ProjectConfigurationLoader()  // package.json files
    ]);
    var ext = {};
    loaders.forEach(function(loader) {
      loader.getExtensions().forEach(function(e) {
        ext[e] = true;
      });
    });
    var finder = new SymbolicLinkFinder({
      scanDirs: [buildConfig.projectRoot],
      extensions: Object.keys(ext),
      ignore: shouldStopTraversing.bind(null, buildConfig)
    });
    return new Haste(loaders, [buildConfig.projectRoot], {finder: finder});
  }