ConciseModelPersistence: drop previous version (original v9) persistence; though leave read handler for the time being.
ConciseModelPersistence: update AnnotationInfoReader to match concise alternative (v9-bis)
MPS-19819 Exceptions during building of mbeddr: Do not hide ModelReadException with not-allowed null rv.
BinaryPersistence: new version of binary persistence to match changes in v9-bis; binary persistence rewritten to polish style (constants, code reuse); get ready for externally supplied meta-info
ModelPersistence: introduced per-model mechanism to keep meta information necessary to persist a model.
BinaryPersistence: read references exactly the way they were written; be a bit more verbose when model load error occurs; fix concept fqn re-construction on read (need to use slightly different bloody static method)
MPS-20871 java.lang.IllegalArgumentException : Comparison method violates its general contract!: Comparison method violates its general contract!
MPS-20860 Can't merge my feature branch with the current state of MPS master branch: employ newly introduced MetaModelInfoProvider, which substitutes ModelEnvironmentInfo, to preserve meta-info essential to save merged model.
Expose ModelData from model stubs to facilitate migration to API classes (do not use internal smodel.SModel unless needed).
ConvertToBinary: even more verbose on errors
ModelPersistence: keep stub concept id along with IMPLEMENTATION_WITH_STUB flag to facilitate 'strip implementation' behavior when MPS and its concept registry is not available. Treat concepts with missing stubs as regular implementation concepts (i.e. throw them away on reading).
Fix registry sort to use unsigned values, while keep previous internal keys to preserve concept id value meanwhile.
Drop transition 'concise' model property, treat all models as concise (unless opposite is explicitly stated)
ModelPersistence: re-save all models with stub concept information in the meta-model registry (to facilitate strip implementation behavior when no MPS concept registry is available)
BinaryPersistence: keep stub concept id in the meta-model registry as default(xml) persistence does.
ModelPersistence: calculateImplicitImports is useless for v9 persistence (implicit imports are not saved anyway), and is dangerous for headless (e.g. merge) mode as it triggers access to unavailable ConceptDescriptors.
IdInfoCollector shall always fills concept name from MMIP to avoid IllegalConceptDescriptor warning during merge (before SConcept.getQualifiedName answers with cached value, it looks up CD which is not there during merge). Although same applies to SProperty.getName and assoc/aggreg links, they left untouched to push changes in corresponding adapters instead (e.g. check isMergeMode and don't look up CD then).
MergeDriver: merged properties are identified with SPropertyAdapterByName, and thus can't utilize MetaModelInfoProvider to save merged models back. Refactored to use SProperty/SReferenceLink. Part of MPS-20860 Can't merge my feature branch with the current state of MPS master branch.
MergeDriver: use new (id-friendly) API to access model properties: during merge, model is copied, and if merged properties are identified with SPropertyAdapterByName, persistence fails to utilize MetaModelInfoProvider to save merged models back. Part of MPS-20860 Can't merge my feature branch with the current state of MPS master branch.
MergeDriver: respect 'No MPS runtime' mode and don't try to find CD we know are not there (and avoid tons of IllegalConceptDescriptor warnings in the log), just return the name as we know it.
MergeDriver: refactored to use SContainmentLink instead of role name to avoid SContainmentLinkByName in merged models and accompanying failures to find out SContainmentLinkId (there are no ConceptDescriptor to help). Part of MPS-20860 Can't merge my feature branch with the current state of MPS master branch.
Merge remote-tracking branch 'origin/master' into 3.2/artem/default
ImplicitModelImports: Refactor: extract code to collect and track implicit imports into separate class, use it from legacy persistence code. V9 builds list of implicit imports on demand and doesn't keep it in the model as there's no need to (no attributes otherwise unavailable are serialized, e.g. import model version). Utility methods essential for specific persistence versions moved closer so that the rest of MPS doesn't see them.
ModelImports: drop tracking of implicit languages as we don't save them with v9-bis.