public override void Begin(string transactionName) { if (UndoingOrRedoing) { base.Begin(transactionName); return; } if (!IsMasterContext && !MasterContext.InTransaction) { s_subContextBegan = true; MasterContext.Begin(transactionName); return; } base.Begin(transactionName); if (IsMasterContext) { foreach (GameContext subContext in m_gameDocumentRegistry.SubDocuments.AsIEnumerable <GameContext>()) { subContext.Begin(transactionName); } } }