object ICloneable.Clone()
        {
            // It's slow. So in case of requiring performance, override this deep clone method by your code.
            var clone = CloneUtil.MemoryClone(this) as StateBase;

            clone.Id = this.Id;
            return(clone);
        }
 public T Clone <T>() where T : StateBase
 {
     return(CloneUtil.MemoryClone(this) as T);
 }
 public virtual object Clone()
 {
     // It's slow. So in case of requiring performance, override this deep clone method by your code.
     return(CloneUtil.MemoryClone(this));
 }