String use escaping schema while writing them down to file. It should the only place tackling with escaping. All other string should Java strings.
The content is stored in modifiable external file. It can be edited in text editor, in visulal editor or directly via an API.
These representations need to be reasonable synchronized.
Text => StructautoParse():113, org.netbeans.modules.properties.StructHandler notifyModified():232, org.netbeans.modules.properties.PropertiesEditorSupport insertUpdate():1554, org.openide.text.CloneableEditorSupport$Listener fireInsertUpdate():184, javax.swing.text.AbstractDocument fireInsertUpdate():1020, org.netbeans.editor.BaseDocument insertString():583, org.netbeans.editor.BaseDocument
It does not recognize that struct modification caused the text change and needlessly handles that text change
autoParse():113, org.netbeans.modules.properties.StructHandler notifyModified():232, org.netbeans.modules.properties.PropertiesEditorSupport insertUpdate():1554, org.openide.text.CloneableEditorSupport$Listener fireInsertUpdate():184, javax.swing.text.AbstractDocument fireInsertUpdate():1020, org.netbeans.editor.BaseDocument insertString():583, org.netbeans.editor.BaseDocument run():84, org.openide.text.PositionBounds$1 runAtomicAsUser():906, org.netbeans.editor.BaseDocument runAtomic():217, org.netbeans.editor.GuardedDocument runAtomic():329, org.openide.text.NbDocument setText():108, org.openide.text.PositionBounds print():98, org.netbeans.modules.properties.Element setValue():156, org.netbeans.modules.properties.Element$Basic setKey():370, org.netbeans.modules.properties.Element$ItemElem renameItem():164, org.netbeans.modules.properties.PropertiesStructure setValueAt():174, org.netbeans.modules.properties.PropertiesTableModel
autoparse() does not recognize that struct was not created and always recreates it - FIXED #31593.
PropertiesTableModel.StringPair
Layered TableModels, single properties file TableModel, GroupingTableModel and SortingTableModel. Still need to maintain table cell -> document position mapping e.g. by a wrapper values.