docs: def remove_from(self, target, ctx=None):
          """Remove self annotation from target annotations.
  
          :param target: target from where remove self annotation.
          :param ctx: target ctx.
          """
  
          annotations_key = Annotation.__ANNOTATIONS_KEY__
  
          try:
              # get local annotations
              local_annotations = get_local_property(
                  target, annotations_key, ctx=ctx
              )
          except TypeError:
              raise TypeError('target {0} must be hashable'.format(target))
  
          # if local annotations exist
          if local_annotations is not None:
              # if target in self.targets
              if target in self.targets:
                  # remove target from self.targets
                  self.targets.remove(target)
                  # and remove all self annotations from local_annotations
                  while self in local_annotations:
                      local_annotations.remove(self)
                  # if target is not annotated anymore, remove the empty list
                  if not local_annotations:
                      del_properties(target, annotations_key)