def _copy_some_through(flat_new_output, flat_new_state):
    flat_new_output = [_copy_one_through(zero_output, new_output) for (zero_output, new_output) in zip(flat_zero_output, flat_new_output)]
    flat_new_state = [_copy_one_through(state, new_state) for (state, new_state) in zip(flat_state, flat_new_state)]
    return (flat_new_output + flat_new_state)
def _copy_some_through(flat_new_output, flat_new_state):
    flat_new_output = [_copy_one_through(zero_output, new_output) for (zero_output, new_output) in zip(flat_zero_output, flat_new_output)]
    flat_new_state = [_copy_one_through(state, new_state) for (state, new_state) in zip(flat_state, flat_new_state)]
    return (flat_new_output + flat_new_state)