using System; namespace Org.BouncyCastle.Utilities { public interface IMemoable { /// /// Produce a copy of this object with its configuration and in its current state. /// /// /// The returned object may be used simply to store the state, or may be used as a similar object /// starting from the copied state. /// IMemoable Copy(); /// /// Restore a copied object state into this object. /// /// /// Implementations of this method should try to avoid or minimise memory allocation to perform the reset. /// /// an object originally {@link #copy() copied} from an object of the same type as this instance. /// if the provided object is not of the correct type. /// if the other parameter is in some other way invalid. void Reset(IMemoable other); } }