static void MementoRestore(IMementoContext ctx, ref SubWithArrayOfObjects item, object m)
 {
     SubWithArrayOfObjectsMemento data = (SubWithArrayOfObjectsMemento)m;
     Sub b = item;
     ATTi.Core.Mementos.Memento.RestoreBaseMemento<Sub>(ctx, ref b, data.BaseMemento);
     item._ss = data.SubSub_ss;
     ATTi.Core.Mementos.Memento.RestoreArrayMemento<object>(ctx, ref item._values, data.SubSub_values);
 }
 static IMemento MementoCapture(IMementoContext ctx, SubWithArrayOfObjects item)
 {
     SubWithArrayOfObjectsMemento m;
     m.BaseMemento = ATTi.Core.Mementos.Memento.CaptureBaseMemento<Sub>(ctx, item);
     m.SubSub_ss = item._ss;
     m.SubSub_values = ATTi.Core.Mementos.Memento.CaptureArrayMemento<object>(ctx, item._values);
     return m;
 }