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);
}
}