code: function define (File, utils) {
    const { debug, error, strong } = utils.cnsl;
  
    return class LESSFile extends File {
      /**
       * Constructor
       * @param {String} id
       * @param {String} filepath
       * @param {Object} options
       *  - {Object} caches
       *  - {Object} fileExtensions
       *  - {Function} fileFactory
       *  - {Object} globalAliases
       *  - {Array} npmModulepaths
       *  - {Object} pluginOptions
       *  - {Object} runtimeOptions
       */
      constructor (id, filepath, options) {
        super(id, filepath, options);
  
        this.workflows.writeable = WORKFLOW_WRITEABLE;
      }
  
      /**
       * Compile file contents
       * @param {Object} buildOptions
       *  - {Boolean} batch
       *  - {Boolean} bootstrap
       *  - {Boolean} boilerplate
       *  - {Boolean} browser
       *  - {Boolean} bundle
       *  - {Boolean} compress
       *  - {Array} ignoredFiles
       *  - {Boolean} helpers
       *  - {Boolean} watchOnly
       * @param {Function} fn(err)
       */
      compile (buildOptions, fn) {
        const options = Object.assign(
          this.hasMaps ? { sourceMap: {} } : {},
          this.options.pluginOptions.less || {}
        );
  
        less.render(this.content, options, (err, result) => {
          if (err) {
            if (!this.options.runtimeOptions.watch) return fn(err);
            error(err, 4, false);
          }
  
          const { css: content, map } = result;
  
          this.setContent(content);
          if (map) this.setMap(map);
          debug(`compile: ${strong(this.relpath)}`, 4);
          fn();
        });
      }
    };
  }
docs: Extend 'File' with new behaviour
  @param {Class} File
  @param {Object} utils
  @returns {Class}