showMarkingElem :: PN SimFlow SimValue -> (PlaceNo, [SimValue]) -> ShowS
    showMarkingElem pn (placeNo, tokens) = showString "Place " . shows placeNo . space . showString label .
        showString ": " . shows (length tokens) . (if length tokens > 1 then showString "!!!" else id) .
        space . showString (plural "token" tokens) . showString " [" .
        showListWithSep (showString ", ") (showString . showUntypedSimValue) tokens .
        showString "]"
        where label = joinLabel $ placeLabel $ (pnPlaces pn) DM.! placeNo
showMarkingElem :: PN SimFlow SimValue -> (PlaceNo, [SimValue]) -> ShowS
showMarkingElem pn (placeNo, tokens) = showString "Place " . shows placeNo . space . showString label .
        showString ": " . shows (length tokens) . (if length tokens > 1 then showString "!!!" else id) .
        space . showString (plural "token" tokens) . showString " [" .
        showListWithSep (showString ", ") (showString . showUntypedSimValue) tokens .
        showString "]"
        where label = joinLabel $ placeLabel $ (pnPlaces pn) DM.! placeNo
showMarkingElem pn (placeNo, tokens) = showString "Place " . shows placeNo . space . showString label .
        showString ": " . shows (length tokens) . (if length tokens > 1 then showString "!!!" else id) .
        space . showString (plural "token" tokens) . showString " [" .
        showListWithSep (showString ", ") (showString . showUntypedSimValue) tokens .
        showString "]"
        where label = joinLabel $ placeLabel $ (pnPlaces pn) DM.! placeNo