Create a copy of current chain state. Consuming resulting chain does not affect initial chain.
Generate next value, changing state if needed