parseSubscriptionFiles :: [FileFieldLabel] -> BSERValue -> Parser SubscriptionFiles
parseSubscriptionFiles fileFieldLabels (BSERObject o) = do
    clockId <- parseClockId o
    root <- o .: "root"
    subscription <- o .: "subscription"
    files <- o .: "files"
    files' <- mapM (parseFileFields fileFieldLabels) files
    isFreshInstance <- o .: "is_fresh_instance"
    pure SubscriptionFiles
        { _SubscriptionFiles_Clock = clockId
        , _SubscriptionFiles_Root = root
        , _SubscriptionFiles_Subscription = SubscriptionName subscription
        , _SubscriptionFiles_Files = files'
        , _SubscriptionFiles_IsFreshInstance = isFreshInstance
        }
parseSubscriptionFiles :: [FileFieldLabel] -> BSERValue -> Parser SubscriptionFiles
parseSubscriptionFiles fileFieldLabels (BSERObject o) = do
    clockId <- parseClockId o
    root <- o .: "root"
    subscription <- o .: "subscription"
    files <- o .: "files"
    files' <- mapM (parseFileFields fileFieldLabels) files
    isFreshInstance <- o .: "is_fresh_instance"
    pure SubscriptionFiles
        { _SubscriptionFiles_Clock = clockId
        , _SubscriptionFiles_Root = root
        , _SubscriptionFiles_Subscription = SubscriptionName subscription
        , _SubscriptionFiles_Files = files'
        , _SubscriptionFiles_IsFreshInstance = isFreshInstance
        }
parseSubscriptionFiles fileFieldLabels (BSERObject o) = do
    clockId <- parseClockId o
    root <- o .: "root"
    subscription <- o .: "subscription"
    files <- o .: "files"
    files' <- mapM (parseFileFields fileFieldLabels) files
    isFreshInstance <- o .: "is_fresh_instance"
    pure SubscriptionFiles
        { _SubscriptionFiles_Clock = clockId
        , _SubscriptionFiles_Root = root
        , _SubscriptionFiles_Subscription = SubscriptionName subscription
        , _SubscriptionFiles_Files = files'
        , _SubscriptionFiles_IsFreshInstance = isFreshInstance
        }