code: func siblingSelector(s1, s2 Selector, adjacent bool) Selector {
  	return func(n *html.Node) bool {
  		if !s2(n) {
  			return false
  		}
  
  		if adjacent {
  			for n = n.PrevSibling; n != nil; n = n.PrevSibling {
  				if n.Type == html.TextNode || n.Type == html.CommentNode {
  					continue
  				}
  				return s1(n)
  			}
  			return false
  		}
  
  		// Walk backwards looking for element that matches s1
  		for c := n.PrevSibling; c != nil; c = c.PrevSibling {
  			if s1(c) {
  				return true
  			}
  		}
  
  		return false
  	}
  }
docs: // siblingSelector returns a Selector that matches an element
  // if it matches s2 and in is preceded by an element that matches s1.
  // If adjacent is true, the sibling must be immediately before the element.