code: def _bind_target(self, target, ctx=None):
          
  
          result = target
  
          try:
              # get annotations from target if exists.
              local_annotations = get_local_property(
                  target, Annotation.__ANNOTATIONS_KEY__, [], ctx=ctx
              )
          except TypeError:
              raise TypeError('target {0} must be hashable.'.format(target))
  
          # if local_annotations do not exist, put them in target
          if not local_annotations:
              put_properties(
                  target,
                  properties={Annotation.__ANNOTATIONS_KEY__: local_annotations},
                  ctx=ctx
              )
  
          # insert self at first position
          local_annotations.insert(0, self)
  
          # add target to self targets
          if target not in self.targets:
              self.targets.append(target)
  
          return result
docs: Method to override in order to specialize binding of target.
  
          :param target: target to bind.
          :param ctx: target ctx.
          :return: bound target.