code: def append(self, child, *args, **kwargs):
          
          #if no set is associated with the layer yet, we learn it from span annotation elements that are added
          if self.set is False or self.set is None:
              if inspect.isclass(child):
                  if issubclass(child,AbstractSpanAnnotation):
                      if 'set' in kwargs:
                          self.set = kwargs['set']
              elif isinstance(child, AbstractSpanAnnotation):
                  if child.set:
                      self.set = child.set
              elif isinstance(child, Correction):
                  #descend into corrections to find the proper set for this layer (derived from span annotation elements)
                  for e in itertools.chain( child.new(), child.original(), child.suggestions() ):
                      if isinstance(e, AbstractSpanAnnotation) and e.set:
                          self.set = e.set
                          break
  
          return super(AbstractAnnotationLayer, self).append(child, *args, **kwargs)
docs: See :meth:`AbstractElement.append`