implement if* macro