code: func (p *pattern) compile(tokens []*Token) Pattern {
  	// what tokens do we have in this pattern?
  	//      - ANY token means we can match to any depth
  	//      - SEPARATOR means we have path rather than file matching
  	_separator := false
  	for _, _token := range tokens {
  		switch _token.Type {
  		case ANY:
  			return p.any(tokens)
  		case SEPARATOR:
  			_separator = true
  		}
  	}
  
  	// should we perform path or name/file matching?
  	if _separator {
  		return p.path(tokens)
  	} else {
  		return p.name(tokens)
  	}
  }
docs: // compile generates a specific Pattern (i.e. name, path or any)
  // represented by the list of tokens.