static void MementoRestore(IMementoContext ctx, ref SubWithPrimitiveArray item, object m)
 {
     SubSubMemento data = (SubSubMemento)m;
     Sub b = item;
     ATTi.Core.Mementos.Memento.RestoreBaseMemento<Sub>(ctx, ref b, data.BaseMemento);
     ATTi.Core.Mementos.Memento.RestoreMemento<Obj>(ctx, ref Blibber, data.SubSub_Blibber);
     item._ss = data.SubSub_ss;
     ATTi.Core.Mementos.Memento.RestoreArrayMemento<int>(ctx, ref item._values, data.SubSub_values);
 }
 static IMemento MementoCapture(IMementoContext ctx, SubWithPrimitiveArray item)
 {
     SubSubMemento m;
     m.BaseMemento = ATTi.Core.Mementos.Memento.CaptureBaseMemento<Sub>(ctx, item);
     m.SubSub_Blibber = ATTi.Core.Mementos.Memento.CaptureMemento<Obj>(ctx, Blibber);
     m.SubSub_ss = item._ss;
     m.SubSub_values = ATTi.Core.Mementos.Memento.CaptureArrayMemento<int>(ctx, item._values);
     return m;
 }