handle infinite recursion with circular references