public static function get($applicationState)
    {

        // check if the requested container state is available and create a new instance
        if (in_array($applicationState, ApplicationStateKeys::getApplicationStates())) {
            return new ApplicationStateKeys($applicationState);
        }

        // throw a exception if the requested runlevel is not available
        throw new InvalidApplicationStateException(
            sprintf(
                'Requested application state %s is not available (choose on of: %s)',
                $applicationState,
                implode(',', ApplicationStateKeys::getApplicationStates())
            )
        );
    }