code: func (s *Sublist) Remove(subject string, element interface{}) error {
  	tsa := [32]string{}
  	tokens := tsa[:0]
  	start := 0
  	for i := 0; i < len(subject); i++ {
  		if subject[i] == btsep {
  			tokens = append(tokens, subject[start:i])
  			start = i + 1
  		}
  	}
  	tokens = append(tokens, subject[start:])
  
  	s.Lock()
  	defer s.Unlock()
  
  	sfwc := false
  	l := s.root
  	var n *node
  
  	// Track levels for pruning
  	var lnts [32]lnt
  	levels := lnts[:0]
  
  	for _, t := range tokens {
  		if len(t) == 0 || sfwc {
  			return ErrInvalidSubject
  		}
  		if l == nil {
  			return ErrNotFound
  		}
  		switch t[0] {
  		case pwc:
  			n = l.pwc
  		case fwc:
  			n = l.fwc
  			sfwc = true
  		default:
  			n = l.nodes[t]
  		}
  		if n != nil {
  			levels = append(levels, lnt{l, n, t})
  			l = n.next
  		} else {
  			l = nil
  		}
  	}
  	if !s.removeFromNode(n, element) {
  		return ErrNotFound
  	}
  	s.count--
  	for i := len(levels) - 1; i >= 0; i-- {
  		l, n, t := levels[i].l, levels[i].n, levels[i].t
  		if n.isEmpty() {
  			l.pruneNode(n, t)
  		}
  	}
  	s.removeFromCache(subject)
  	return nil
  }
docs: // Remove will remove an element from the sublist.