private static function _processGoalStateChange($newGoalState)
    {
        $last = self::$_lastState;
        $changes = self::_calculateChanges();

        if (count($changes) == 0) {
            self::_acceptLatestIncarnation($newGoalState, $last);
        } else {
            self::_raiseChangingEvent($changes);

            self::_acceptLatestIncarnation($newGoalState, $last);

            self::$_currentEnvironmentData = self::$_runtimeClient
                ->getRoleEnvironmentData();

            self::_raiseChangedEvent($changes);
        }
    }