public Plan(Plan other) { AssignedTimes = new Dictionary <Subject, Time>(other.AssignedTimes); Decisions.AddRange(other.Decisions); SelectedSubjects = new List <Subject>(other.SelectedSubjects); SelectedCourses = new List <Course>(other.SelectedCourses); foreach (var BannedContent in other.BannedContents) { BannedContents.Add(BannedContent.Key, new List <Content>(BannedContent.Value)); } EarliestCompletionTimes = new Dictionary <Subject, Time>(other.EarliestCompletionTimes); SubjectsWithForcedTimes = new HashSet <Subject>(other.SubjectsWithForcedTimes); MaxCreditPoints = new Dictionary <Time, int>(other.MaxCreditPoints); ContentRelations = new HashSet <Edge>(other.ContentRelations); }