code: def root_and_path(self):
          
          rt = []
          curAttr = self
          while isinstance(curAttr.parent, AdHocTree):
              rt.append(curAttr.name)
              curAttr = curAttr.parent
          rt.reverse()
          return (curAttr.parent, rt)
docs: :returns: a tuple (parent, [members,... ]