package com.sap.runlet.operationaltransformation;
/**
* A change operation can be applied to some start state of some
* universe and transforms that universe into a target state.
*
* @author Axel Uhl D043530
*
* @param <S> the class that models the state, on instances of which operations perform changes
*/
public interface Operation<S> extends Cloneable {
public Operation<S> clone();
/**
* Applies this operation to the state <tt>toState</tt>, producing a new target state
* which is returned.
*
* @param toState the state to which to apply this operation
* @return the state produced by applying this operation to <tt>toState</tt>
*/
S applyTo(S toState);
}