private void BringXmatterHtmlUpToDate(HtmlDom bookDOM)
{
//by default, this comes from the collection, but the book can select one, including "null" to select the factory-supplied empty xmatter
var nameOfXMatterPack = OurHtmlDom.GetMetaValue("xMatter", _collectionSettings.XMatterPackName);
nameOfXMatterPack = Storage.HandleRetiredXMatterPacks(OurHtmlDom, nameOfXMatterPack);
var helper = new XMatterHelper(bookDOM, nameOfXMatterPack, _storage.GetFileLocator());
//note, we determine this before removing xmatter to fix the situation where there is *only* xmatter, no content, so if
//we wait until we've removed the xmatter, we no how no way of knowing what size/orientation they had before the update.
Layout layout = Layout.FromDom(bookDOM, Layout.A5Portrait);
XMatterHelper.RemoveExistingXMatter(bookDOM);
layout = Layout.FromDom(bookDOM, layout);
//this says, if you can't figure out the page size, use the one we got before we removed the xmatter
helper.InjectXMatter(_bookData.GetWritingSystemCodes(), layout);
var dataBookLangs = bookDOM.GatherDataBookLanguages();
TranslationGroupManager.PrepareDataBookTranslationGroups(RawDom, dataBookLangs);
}