public static function createProcessControl()
    {
        switch (true) {
            case PosixProcessControl::isAvailable():
                return new PosixProcessControl();

            case WindowsProcessControl::isAvailable():
                return new WindowsProcessControl();

            case UnixProcessControl::isAvailable():
                return new UnixProcessControl();
        }

        throw new \Exception("No ProcessControl implementation available.");
    }