code: function File(file) {
    if (!file) file = {};
    this.isFile = true;
  
    if (file.name) {
      this.name = file.name;
    }
    // Track path changes
    var history = file.path ? [path.resolve(file.path)] : file.history;
    this.history = history || [];
  
    this.base = file.base ? path.resolve(file.base) : process.cwd();
    this.cwd = file.cwd ? path.resolve(file.cwd) : process.cwd();
    define(this, 'cache', new MapCache());
  }
docs: TODO: Use `vinyl` directly and use utils to add `file.stat` and `file.name`.
  
  This is temporary, based on `vinyl` and modified for our use case.
  Namely `file.stat` and `file.name` handling, and cloning related
  libs are removed since we won't ever have a need for those. The
  goal is speed here.