diff --git a/src/Hl7.Fhir.Base/CompatibilitySuppressions.xml b/src/Hl7.Fhir.Base/CompatibilitySuppressions.xml
index 3cc871a611..66fb3ee335 100644
--- a/src/Hl7.Fhir.Base/CompatibilitySuppressions.xml
+++ b/src/Hl7.Fhir.Base/CompatibilitySuppressions.xml
@@ -43,6 +43,13 @@
lib/net8.0/Hl7.Fhir.Base.dll
true
+
+ CP0002
+ F:Hl7.Fhir.Model.Resource.SyncLock
+ lib/net8.0/Hl7.Fhir.Base.dll
+ lib/net8.0/Hl7.Fhir.Base.dll
+ true
+
CP0002
F:Hl7.Fhir.Serialization.FhirJsonException.INCOMPATIBLE_SIMPLE_VALUE_CODE
@@ -316,6 +323,13 @@
lib/net8.0/Hl7.Fhir.Base.dll
true
+
+ CP0002
+ M:Hl7.Fhir.Model.Resource.get_HasVersionId
+ lib/net8.0/Hl7.Fhir.Base.dll
+ lib/net8.0/Hl7.Fhir.Base.dll
+ true
+
CP0002
M:Hl7.Fhir.Rest.ContentType.BuildContentType(Hl7.Fhir.Rest.ResourceFormat,System.String)
@@ -400,6 +414,13 @@
lib/net8.0/Hl7.Fhir.Base.dll
true
+
+ CP0002
+ M:Hl7.Fhir.Utility.AnnotatableExtensions.RemoveAnnotations``1(Hl7.Fhir.Utility.IAnnotatable)
+ lib/net8.0/Hl7.Fhir.Base.dll
+ lib/net8.0/Hl7.Fhir.Base.dll
+ true
+
CP0002
M:Hl7.Fhir.Utility.ReflectionHelper.IsTypedCollection(System.Type)
diff --git a/src/Hl7.Fhir.Base/ElementModel/DomNode.cs b/src/Hl7.Fhir.Base/ElementModel/DomNode.cs
index bd1e4b0977..6b7c152cbc 100644
--- a/src/Hl7.Fhir.Base/ElementModel/DomNode.cs
+++ b/src/Hl7.Fhir.Base/ElementModel/DomNode.cs
@@ -14,44 +14,48 @@
using System.Linq;
using System.Threading;
-namespace Hl7.Fhir.ElementModel
+namespace Hl7.Fhir.ElementModel;
+
+public class DomNode : IAnnotatable where T : DomNode
{
- public class DomNode : IAnnotatable where T : DomNode
- {
- public string Name { get; set; } = null!;
+ public string Name { get; set; } = null!;
- private List? _childList;
+ private List? _childList;
- protected List ChildList
- {
- get => LazyInitializer.EnsureInitialized(ref _childList, () => [])!;
- set => _childList = value;
- }
+ protected List ChildList
+ {
+ get => LazyInitializer.EnsureInitialized(ref _childList, () => [])!;
+ set => _childList = value;
+ }
- internal IEnumerable ChildrenInternal(string? name = null) =>
- name == null ? ChildList : ChildList.Where(c => c.Name.MatchesPrefix(name));
+ internal IEnumerable ChildrenInternal(string? name = null) =>
+ name == null ? ChildList : ChildList.Where(c => c.Name.MatchesPrefix(name));
- public T? Parent { get; protected set; }
+ public T? Parent { get; protected set; }
- public DomNodeList this[string name] => new (ChildrenInternal(name));
+ public DomNodeList this[string name] => new (ChildrenInternal(name));
- public T this[int index] => ChildList[index];
+ public T this[int index] => ChildList[index];
- #region << Annotations >>
- private AnnotationList? _annotations;
- protected AnnotationList AnnotationsInternal => LazyInitializer.EnsureInitialized(ref _annotations, () => [])!;
+ #region << Annotations >>
+ private AnnotationList? _annotations;
+ protected AnnotationList AnnotationsInternal => LazyInitializer.EnsureInitialized(ref _annotations, () => [])!;
- protected bool HasAnnotations => _annotations is not null && !_annotations.IsEmpty;
+ protected bool HasAnnotations => _annotations is not null && !_annotations.IsEmpty;
- public void AddAnnotation(object annotation)
- {
- AnnotationsInternal.AddAnnotation(annotation);
- }
+ public void AddAnnotation(object annotation)
+ {
+ AnnotationsInternal.AddAnnotation(annotation);
+ }
- public void RemoveAnnotations(Type type)
- {
- AnnotationsInternal.RemoveAnnotations(type);
- }
- #endregion
+ public void RemoveAnnotations(Type type)
+ {
+ AnnotationsInternal.RemoveAnnotations(type);
}
-}
+
+ public virtual IEnumerable