updateModeMap :: ModeFieldInfoMap -> ModeFieldInfoMap -> ModeFieldInfoMap
updateModeMap acc modeMap
    | length (Map.keys modeMap) == 1
        = let key = head $ Map.keys modeMap
              val = case acc ^.at key of
                        Nothing  -> fromJust $ modeMap ^.at key -- mode is not in map
                        Just fis -> mergeFieldInfo fis $ fromJust $ modeMap ^.at key
          in acc & at key ?~ val
    | otherwise = error "updateModeMap"
updateModeMap :: ModeFieldInfoMap -> ModeFieldInfoMap -> ModeFieldInfoMap
updateModeMap acc modeMap
    | length (Map.keys modeMap) == 1
        = let key = head $ Map.keys modeMap
              val = case acc ^.at key of
                        Nothing  -> fromJust $ modeMap ^.at key -- mode is not in map
                        Just fis -> mergeFieldInfo fis $ fromJust $ modeMap ^.at key
          in acc & at key ?~ val
    | otherwise = error "updateModeMap"
updateModeMap acc modeMap
    | length (Map.keys modeMap) == 1
        = let key = head $ Map.keys modeMap
              val = case acc ^.at key of
                        Nothing  -> fromJust $ modeMap ^.at key -- mode is not in map
                        Just fis -> mergeFieldInfo fis $ fromJust $ modeMap ^.at key
          in acc & at key ?~ val
    | otherwise = error "updateModeMap"