package dev.kske.undoredo; /** * Base interface for changes to be registered in an undo manager. * * @author Maximilian Käfer * @since 0.0.1 */ public interface Change { /** * Performs the action implemented by this change. * * @since 0.0.1 */ void apply(); /** * Inverts this change. * * @implSpec This method is not supposed to alter the state of this change, but rather to create * a new complementary change. * @return the inverted change * @since 0.0.1 */ Change invert(); /** * @return whether the application of this change would result in an identical state * @since 0.0.1 */ boolean isIdentity(); }