To extend the algorithm to support non-projective trees, we introduce move-right and move-left operations similar to the stack-to-buffer swaps proposed by Nivre (2009) for shift-reduce style parsing.
instead of attaching a token to one of its neighbors at each step, the algorithm may instead decide to move a token past one of its neighbors.