Once again quite similar to preprocess_macro_blocks but shorter, easier to use and easier to read. (76 vs 109)