compileAddon(tree) {
    if (!this.options) {
      throw new SilentError(
        `Ember CLI addons manage their own module transpilation during the \`treeForAddon\` processing. ` +
          `\`${this.name}\` (found at \`${this.root}\`) has removed \`this.options\` ` +
          `which conflicts with the addons ability to transpile its \`addon/\` files properly.`
      );
    }

    if (!this.options.babel) {
      throw new SilentError(
        `Ember CLI addons manage their own module transpilation during the \`treeForAddon\` processing. ` +
          `\`${this.name}\` (found at \`${this.root}\`) has overridden the \`this.options.babel\` options ` +
          `which conflicts with the addons ability to transpile its \`addon/\` files properly.`
      );
    }

    if (!this.options['ember-cli-babel']) {
      throw new SilentError(
        `Ember CLI addons manage their own module transpilation during the \`treeForAddon\` processing. ` +
          `\`${this.name}\` (found at \`${this.root}\`) has overridden the \`this.options['ember-cli-babel']\` options ` +
          `which conflicts with the addons ability to transpile its \`addon/\` files properly.`
      );
    }

    let scopedInput = new Funnel(tree, {
      destDir: this.moduleName(),
      annotation: `Funnel: ${this.name}/addon`,
    });

    let treeWithCompiledTemplates = this.compileTemplates(scopedInput);
    let final = this.processedAddonJsFiles(treeWithCompiledTemplates);

    return final;
  }
Runs the addon tree through preprocessors.

    @private
    @method compileAddon
    @param {Tree} tree Addon file tree
    @return {Tree} Compiled addon tree