code: func (t *Tree) Applied(to string) []*Attr {
  	var attrs []*Attr
  	for _, line := range t.Lines {
  		if line.Pattern.Match(to) {
  			attrs = append(attrs, line.Attrs...)
  		}
  	}
  
  	splits := strings.SplitN(to, "/", 2)
  	if len(splits) == 2 {
  		car, cdr := splits[0], splits[1]
  		if child, ok := t.Children[car]; ok {
  			attrs = append(attrs, child.Applied(cdr)...)
  		}
  	}
  
  	return attrs
  }
docs: // Applied returns a slice of attributes applied to the given path, relative to
  // the receiving tree. It traverse through sub-trees in a topological ordering,
  // if there are relevant .gitattributes matching that path.