generated code shown next to Blockly (instead of above)
a semaphore rule without a fan disappears from the code
codegen support for the extra_semaphore block