memSpacesAreEmpty :: ExceptT GrLang.Error LuaGrLang Bool
memSpacesAreEmpty = do
  areEmpty' <- (&&) <$> withMemSpace values isEmptyMemSpace <*> withMemSpace iterLists isEmptyMemSpace
  if areEmpty'
    then return True
    else do
      liftLua $ Lua.gc Lua.GCCOLLECT 0
      (&&) <$> withMemSpace values isEmptyMemSpace <*> withMemSpace iterLists isEmptyMemSpace
memSpacesAreEmpty :: ExceptT GrLang.Error LuaGrLang Bool
memSpacesAreEmpty = do
  areEmpty' <- (&&) <$> withMemSpace values isEmptyMemSpace <*> withMemSpace iterLists isEmptyMemSpace
  if areEmpty'
    then return True
    else do
      liftLua $ Lua.gc Lua.GCCOLLECT 0
      (&&) <$> withMemSpace values isEmptyMemSpace <*> withMemSpace iterLists isEmptyMemSpace
memSpacesAreEmpty = do
  areEmpty' <- (&&) <$> withMemSpace values isEmptyMemSpace <*> withMemSpace iterLists isEmptyMemSpace
  if areEmpty'
    then return True
    else do
      liftLua $ Lua.gc Lua.GCCOLLECT 0
      (&&) <$> withMemSpace values isEmptyMemSpace <*> withMemSpace iterLists isEmptyMemSpace