code: def clone(self):
          
          # XXX copy lookupname/callcontext ?
          clone = InferenceContext(self.path, inferred=self.inferred)
          clone.callcontext = self.callcontext
          clone.boundnode = self.boundnode
          clone.extra_context = self.extra_context
          return clone
docs: Clone inference path
  
          For example, each side of a binary operation (BinOp)
          starts with the same context but diverge as each side is inferred
          so the InferenceContext will need be cloned