-- A debugging aid to help animate intermediate results within f.
-- Pause animation in the current frame using loiter().
-- Try to only have one such call in your program.
-- You can have multiple, but things might get confusing if one of them indirectly calls the other,
-- or more generally if a single function ever loiters sometimes under the call tree of one and sometimes under the other.
animate = function(f, ...)
	local args = {...}
	Error_with_callstack = nil
	local co = coroutine.create(
						function()
							xpcall(function()
											f(unpack(args))
										end,
										save_callstack)
						end)
	coroutine.resume(co, ...)
	if Error_with_callstack then
		error(Error_with_callstack)
	end
	table.insert(Debug_animations_in_progress, {co=co, next_run=Current_time+0.3})
end
