parseClockId :: BSERObject -> Parser ClockId
parseClockId o = do
    clockId <- o .: "clock"
    unless ("c:" `BC8.isPrefixOf` clockId) $
        fail $ "Invalid clock id: " ++ BC8.unpack clockId
    pure (ClockId clockId)
parseClockId :: BSERObject -> Parser ClockId
parseClockId o = do
    clockId <- o .: "clock"
    unless ("c:" `BC8.isPrefixOf` clockId) $
        fail $ "Invalid clock id: " ++ BC8.unpack clockId
    pure (ClockId clockId)
parseClockId o = do
    clockId <- o .: "clock"
    unless ("c:" `BC8.isPrefixOf` clockId) $
        fail $ "Invalid clock id: " ++ BC8.unpack clockId
    pure (ClockId clockId)