protected function execute(InputInterface $input, OutputInterface $output)
    {
        $this->input  = $input;
        $this->output = $output;
        $composerJson = $this->readComposerJson();
        $travisYml    = $this->readTravisYml();
        $exitCode     = 0;

        if (!($this->validatePhpVersionComposerJson($composerJson) && $this->validatePhpVersionTravisYml($travisYml))) {
            return false;
        }

        if ($this->input->hasOption('unmaintained-version-error')) {
            if (!$this->validateNoUnmaintainedPhpVersions(
                $composerJson,
                $travisYml,
                explode(',', TravisEnvironmentInformation::PHP_VERSIONS)
            )) {
                $exitCode = 1;
            }
        }

        if (!$this->validatePhpVersionAgainstTravis($composerJson, $travisYml)) {
            $exitCode = 1;
        }

        if (!$this->validateTravisContainsAllSupportedPhpVersions(
            $composerJson,
            $travisYml,
            explode(',', TravisEnvironmentInformation::PHP_VERSIONS)
        )) {
            $exitCode = 1;
        }

        return $exitCode;
    }