processFiles(intoDir, templateVariables, options) {
    let files = this._getFilesForInstall(templateVariables.targetFiles);
    let fileInfos = this._getFileInfos(files, intoDir, templateVariables, options);
    this._checkForNoMatch(fileInfos, templateVariables.rawArgs);

    this._ignoreUpdateFiles();

    let fileInfosToRemove = this._getFileInfos(this.filesToRemove, intoDir, templateVariables);

    fileInfosToRemove = finishProcessingForUninstall(fileInfosToRemove);

    return Promise.all(fileInfos.filter(isValidFile).map(prepareConfirm))
      .then(finishProcessingForInstall)
      .then((fileInfos) => {
        return Promise.all(
          fileInfos.map((info) => {
            if (this.shouldConvertToJS(this.options, info)) {
              return this.convertToJS(info);
            }

            return info;
          })
        );
      })
      .then((fileInfos) => fileInfos.concat(fileInfosToRemove));
  }
@method processFiles
    @param {String} intoDir
    @param {Object} templateVariables
    @param {Object} options
    @return {Promise<FileInfo[]>}