public SessionDefinition Clone() { var clone = (SessionDefinition)this.MemberwiseClone(); clone.Recorders = Recorders?.Select(r => r.Clone()).ToList() ?? new List <SessionRecorderDefinition>(); clone.Devices = Devices?.Select(d => d.Clone()).ToList(); clone.Welcome = Welcome?.Clone() as WelcomeActionSettings; clone.PreSessionSteps = PreSessionSteps?.Select(s => s.Clone()).ToList() ?? new List <SessionStep>(); clone.SessionSteps = SessionSteps?.Select(s => s.Clone()).ToList() ?? new List <SessionStep>(); clone.PostSessionSteps = PostSessionSteps?.Select(s => s.Clone()).ToList() ?? new List <SessionStep>(); return(clone); }