code: func EvalFilter(node EvalNode, fn EvalNodeFilterFunc) EvalNode {
  	if f, ok := node.(EvalNodeFilterable); ok {
  		f.Filter(fn)
  		return node
  	}
  
  	return fn(node)
  }
docs: // EvalFilter runs the filter on the given node and returns the
  // final filtered value. This should be called rather than checking
  // the EvalNode directly since this will properly handle EvalNodeFilterables.