private bool ChangeAffixToStem(ILexEntry entry, IMoMorphType type)
{
var affix = m_obj as IMoAffixForm;
if (affix == null)
throw new ApplicationException("Affix form is not defined");
var rgmsaOld = new List<IMoMorphSynAnalysis>();
if (m_obj.OwningFlid == LexEntryTags.kflidLexemeForm)
{
foreach (var msa in entry.MorphoSyntaxAnalysesOC)
{
if (!(msa is IMoStemMsa))
rgmsaOld.Add(msa);
}
}
if (CheckForAffixDataLoss(affix, rgmsaOld))
return false;
FdoCache cache = m_cache;
var stem = m_cache.ServiceLocator.GetInstance<IMoStemAllomorphFactory>().Create();
SwapValues(entry, affix, stem, type, rgmsaOld); // may cause slice/button to be disposed...
return true;
}