docs: function(file) {
          if (require.alias && require.alias[file]) {
              file = require.alias[file];
          }
  
          var module = {
              exports: {},
              file: file
          };
  
          file = require.resolve(this && this.file ? this.file : './', file);
  
          var requireFunc = require.bind({
              file: file
          });
  
          if (window.require.cache[file]) {
              if (window.require.cache[file].obj) {
                  return window.require.cache[file].obj;
              }
  
              window.require.cache[file].fn(module, module.exports, requireFunc);
              window.require.cache[file].obj = module.exports;
              return window.require.cache[file].obj;
          }
  
          if (!window.require.autoload || (window.require.autoload && file.charAt(0) !== '.')) {
              throw new Error('Module ' + file + ' not found!');
          }
  
          var remoteFile = location.protocol
              .concat('//', location.host)
              .concat(file.substr(1));
          
          var xhr = new XMLHttpRequest();
          xhr.open('GET', remoteFile, false);
          xhr.send();
          if (xhr.status !== 200) {
              throw new Error('Could not load module "' + file + '"! Response error: ' +
                  xhr.status + ' ' + xhr.statusText);
          }
          var source = xhr.responseText;
  
          var fn;
          try {
              //jshint evil:true
              fn = eval('(function(module, exports, require) {\n' +
                  (/\.json$/.test(file) ? 'module.exports = ' : '') +
                  source + '\n})\n\n//# sourceURL=' + file);
          }
          catch (err) {
              throw new Error(err + ' in ' + file);
          }
  
          fn(module, module.exports, require.bind(requireFunc));
          window.require.cache[file] = {
              fn: fn,
              calls: 1,
              obj: module.exports,
              loaded: true
          };
  
          return window.require.cache[file].obj;
      }