A B C
C.method {
  A->C: async
  C->A: async
  C->B: async
  B->C: async
  B.method {
    A->A: async
    A->B: async
    A->C: async
    B->B: async
    B->C: async
    B->A: async
    C->C: async
    C->B: async
    C->A: async
  }
}