code: func evaluateSelector(sel *ast.SelectorExpr, fields []string) ([]string, error) {
  	fields = append([]string{sel.Sel.Name}, fields...)
  	switch l := sel.X.(type) {
  	case *ast.SelectorExpr:
  		return evaluateSelector(l, fields)
  	case *ast.Ident:
  		fields = append([]string{l.Name}, fields...)
  		return fields, nil
  	default:
  		return nil, trace.BadParameter("unsupported selector type: %T", l)
  	}
  }
docs: // evaluateSelector recursively evaluates the selector field and returns a list
  // of properties at the end