static _traverse(inDirPath, filePath, packageName, mainFilePath) {
    logger.i(`parsing: ${filePath}`);
    let ast;
    try {
      ast = ESParser.parse(filePath);
    } catch (e) {
      InvalidCodeLogger.showFile(filePath, e);
      return null;
    }

    const pathResolver = new PathResolver(inDirPath, filePath, packageName, mainFilePath);
    const factory = new DocFactory(ast, pathResolver);

    ASTUtil.traverse(ast, (node, parent)=>{
      try {
        factory.push(node, parent);
      } catch (e) {
        InvalidCodeLogger.show(filePath, node);
        throw e;
      }
    });

    return {results: factory.results, ast: ast};
  }
traverse doc comment in JavaScript file.
@param {string} inDirPath - root directory path.
@param {string} filePath - target JavaScript file path.
@param {string} [packageName] - npm package name of target.
@param {string} [mainFilePath] - npm main file path of target.
@returns {Object} - return document that is traversed.
@property {DocObject[]} results - this is contained JavaScript file.
@property {AST} ast - this is AST of JavaScript file.
@private