```go type A struct { B *B } type B struct { A *A } func (a *A) Clone() *A { a1 := &A{B: &B{}} a1.B.A = a1 tp := &A{} deriveDeepCopyA(tp, a1) return tp } ```