public object Clone()
        {
            var clone = new ObservableDummyTestObject();

            clone.Title = Title;


            clone.TimesheetId = TimesheetId;


            clone.ProjectTimeItems = new ObservableCollection <ObservableProjectTaskTimesheetItem>();
            foreach (var item in ProjectTimeItems)
            {
                clone.ProjectTimeItems.Add(item);
            }


            clone.NonProjectActivityItems = new ObservableCollection <ObservableProjectTaskTimesheetItem>();
            foreach (var item in NonProjectActivityItems)
            {
                clone.NonProjectActivityItems.Add(item);
            }


            clone.RequiredHours = new ObservableCollection <TimeSpan>();
            foreach (var item in RequiredHours)
            {
                clone.RequiredHours.Add(item);
            }


            clone.TotalRequiredHours = TotalRequiredHours;


            clone.DummyTimeEntry = (ObservableTimeEntry)DummyTimeEntry.Clone();


            clone.DummyValueTypeCollection = new ObservableCollection <int>();
            foreach (var item in DummyValueTypeCollection)
            {
                clone.DummyValueTypeCollection.Add(item);
            }


            clone.AttachEventHandlers();
            clone.AcceptChanges();
            return(clone);
        }
 // This is only called after Clone() (so no need to unhook handlers). Need to refactor so that ResetProperties calls this
 public void AttachEventHandlers()
 {
     foreach (var item in ProjectTimeItems)
     {
         item.PropertyChanged += ProjectTimeItems_Item_PropertyChanged;
         item.AttachEventHandlers();
     }
     foreach (var item in NonProjectActivityItems)
     {
         item.PropertyChanged += NonProjectActivityItems_Item_PropertyChanged;
         item.AttachEventHandlers();
     }
     RequiredHours.CollectionChanged += RequiredHours_CollectionChanged;
     DummyTimeEntry.PropertyChanged  += DummyTimeEntry_PropertyChanged;
     DummyTimeEntry.AttachEventHandlers();
     DummyValueTypeCollection.CollectionChanged += DummyValueTypeCollection_CollectionChanged;
 }