protected function parseDocumentationPage($file)
    {
        try {

            /** @var $file SplFileInfo */
            if ($file->getExtension() !== 'html') {
                throw new \OutOfBoundsException('Not HTML.');
            }

            $crawler = new Crawler(file_get_contents($file->getRealPath()));

            // Check is Doc page
            if ($crawler->filter('#method-info')->count() == 0) {
                throw new \OutOfBoundsException('Not Documentation File.');
            }

            // Check if is not deprecated
            if ($crawler->filter('.deprecation-warning')->count() > 0) {
                throw new \OutOfBoundsException('Deprecated.');
            }

            $this->output->writeln('Parsing: '.$file->getPathname());
            $this->getMethodDefinitions($crawler);
        } catch (\OutOfBoundsException $e) {
            $this->output->writeln(
                sprintf(
                    '<error>SKIPPED:</error> <info>%s</info> because <info>%s</info>',
                    $file->getPathname(),
                    $e->getMessage()
                )
            );
        } catch (InvalidArgumentException $e) {
            $this->output->writeln(
                sprintf(
                    '<error>ERROR:</error> <info>%s</info> with <info>%s</info> at line %d',
                    $file->getPathname(),
                    $e->getMessage(),
                    $e->getLine()
                )
            );
        } catch (Exception $e) {
            $this->output->writeln(
                sprintf(
                    '<error>ERROR:</error> <info>%s</info> with <info>%s</info>',
                    $file->getPathname(),
                    $e->getMessage()
                )
            );
        }
    }