tcDefaultInitExpr l False ty szs Nothing = liftM Just $ withDef True $ do
    x <- liftM varExpr $ newTypedVar "def" ty False Nothing
    let szsl = case szs of
                Nothing -> Nothing
                Just (Sizes xs) -> Just $ map (mapFst $ fmap typed) $ Foldable.toList xs
    topTcCstrM_ l $ Default szsl x
    return $ fmap (Typed l) x
tcDefaultInitExpr l False ty szs Nothing = liftM Just $ withDef True $ do
    x <- liftM varExpr $ newTypedVar "def" ty False Nothing
    let szsl = case szs of
                Nothing -> Nothing
                Just (Sizes xs) -> Just $ map (mapFst $ fmap typed) $ Foldable.toList xs
    topTcCstrM_ l $ Default szsl x
    return $ fmap (Typed l) x
tcDefaultInitExpr l False ty szs Nothing = liftM Just $ withDef True $ do
    x <- liftM varExpr $ newTypedVar "def" ty False Nothing
    let szsl = case szs of
                Nothing -> Nothing
                Just (Sizes xs) -> Just $ map (mapFst $ fmap typed) $ Foldable.toList xs
    topTcCstrM_ l $ Default szsl x
    return $ fmap (Typed l) x