They started off as functional groups I guess, but given the sheer number of options this is becoming too difficult to read.
AST_Node.optimize()