public override LNode WithArgs(Func <LNode, Maybe <LNode> > selector) { RVList <LNode> args = Args, newArgs = args.WhereSelect(selector); if (args == newArgs) { return(this); } return(WithArgs(newArgs)); }