contextWrap'    :: (T.Typeable k)
                => k -- ^ The type of this value
                -> Context -- ^ The context to be searched
                -> (k -> a) -- ^ What to execute if found
                -> a -- ^ Default if not found
                -> a -- ^ Resulting action
contextWrap' k c f df =
    case (Map.lookup key (unwrapContext c)) of
        Nothing -> df
        Just d ->
            let path = D.fromDynamic d
            in case path of
                Nothing -> df
                Just p -> f p
    where
        key = T.typeOf k
-- | Helps unwrap the context value desired.
-- If the value is not present, the default action will be executed.
contextWrap'    :: (T.Typeable k)
                => k -- ^ The type of this value
                -> Context -- ^ The context to be searched
                -> (k -> a) -- ^ What to execute if found
                -> a -- ^ Default if not found
                -> a
contextWrap' k c f df =
    case (Map.lookup key (unwrapContext c)) of
        Nothing -> df
        Just d ->
            let path = D.fromDynamic d
            in case path of
                Nothing -> df
                Just p -> f p
    where
        key = T.typeOf k
-- | Helps unwrap the context value desired.
-- If the value is not present, the default action will be executed.
contextWrap' k c f df =
    case (Map.lookup key (unwrapContext c)) of
        Nothing -> df
        Just d ->
            let path = D.fromDynamic d
            in case path of
                Nothing -> df
                Just p -> f p
    where
        key = T.typeOf k
-- | Helps unwrap the context value desired.
-- If the value is not present, the default action will be executed.