Barrier and delay should take None as argument (which should be the default behavior):
.barrier() -> barrier;, i.e places a barrier on all frames
.barrier([]) -> does NOT insert an AST node
.barrier([frames]) -> barrier frame0, frame1, ...;, i.e. places a barrier on all listed frames