detect recursion and require lists to behave sensibly in this case