public function compile(LocalFile $_bap_path, array $_bap_data = []): string {
    if(!$_bap_path->exists) {
      throw new TemplateNotFoundException($_bap_path);
    }

    $_bap_level = ob_get_level();
    ob_start();

    if(extract($_bap_data, EXTR_SKIP) !== count($_bap_data)) {
      throw new ParseError('Invalid variable name used');
    }

    try {
      include $_bap_path->full_path;
    } catch(Throwable $e) {
      while(ob_get_level() > $_bap_level) {
        ob_end_clean();
      }

      throw new TemplateCompilationError($_bap_path, $e);
    }

    return ltrim(ob_get_clean());
  }