clone

Cloning is used to duplicate steps for the purpose of traversal optimization and OLTP replication.
When cloning a step, it is important that the steps, the cloned step is equivalent to the state of the step when reset() is called.
Moreover, the previous and next steps should be set to EmptyStep.