public static StkId Clone(StkId other) { if (other == null) { return(null); } var ret = new StkId { V = TValue.Clone(other.V), Index = other.Index }; if (other.List == null) { ret.List = null; } else { ret.List = new StkId[other.List.Length]; //for (var i = 0; i < other.List.Length; i++) ret.List[i] = Clone(other.List[i]); } return(ret); }