protected function createProcess($args = null): Process
    {
        $command = $this->composeCommand($args);

        try {
            $process = $this->composeProcess($command);
        } catch (RuntimeException $e) {
            throw new ExternalProgramFailedException($command, $e->getMessage(), 0, $e);
        }

        return $process;
    }